Пользовательский SimpleSyncProvider, создающий файлы нулевого байта - PullRequest
0 голосов
/ 26 июля 2010

У меня есть FileSyncProvider , и я написал пользовательскую реализацию FullEnumerationSimpleSyncProvider .Когда файлы синхронизируются от FullEnumerationSimpleSyncProvider до FileSyncProvider , они создаются правильно, но имеют нулевые байты.

При синхронизации в другом направлении (FileSyncProvider в качестве источника) всеработает как положено.

Это моя IFileDataRetriever реализация.Я установил точки останова для установщика и получателя свойства FileStream , а свойство Size для Stream всегда корректно, а не ноль.Фактически Stream сам по себе является MemoryStream , может ли это вызывать какие-либо проблемы?

public class FileDataRetriever : IFileDataRetriever
{

    private System.IO.Stream fileStream;

    public string AbsoluteSourceFilePath
    {
        get
        {
            throw new NotImplementedException("AbsoluteSourceFilePath is not supported for this implementation of IFileDataRetriever");
        }
    }

    public FileData FileData { get; set; }

    public System.IO.Stream FileStream
    {
        get
        {
            return this.fileStream;
        }
        set
        {
            this.fileStream = value;
        }
    }

    public string RelativeDirectoryPath { get; set; }
}

Обновление:

Если в качестве эксперимента я изменю код, как показано ниже, будет создан 5-байтовый файл:

    public System.IO.Stream FileStream
    {
        get
        {
            return new MemoryStream(new byte[] { 1, 2, 3, 4, 5 });
        }
        set
        {
            this.fileStream = value;
        }
    }

Так что это говорит мне о том, что он должен нормально работать с MemoryStream.Если я ставлю точку останова на метод получения, она всегда выглядит допустимой, когда она вызывается - она ​​имеет правильный размер и т. Д., А не 0 в качестве размера.

1 Ответ

0 голосов
/ 26 июля 2010

Я понял!Все, что мне нужно было сделать, это сбросить позицию потока на 0. Это было в конце потока, следовательно, запись 0 байтов.

...