0

我有一个FileSyncProvider并且我编写了 FullEnumerationSimpleSyncProvider 的自定义实现。当文件从FullEnumerationSimpleSyncProvider同步到FileSyncProvider时,它们是正确创建的,但是是零字节。

当在另一个方向(FileSyncProvider 作为源)同步时,一切都按预期工作。

这是我的IFileDataRetriever实现。我在FileStream属性 setter 和 getter 上放置了断点,并且Stream的Size属性始终正确,从不为零。实际的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 一起正常工作。如果我在 getter 上放置一个断点,它在被调用时总是看起来有效 - 它具有正确的大小等,而不是 0 作为大小。

4

1 回答 1

0

我懂了!我需要做的就是将流的位置重置为 0。它位于流的末尾,因此写入 0 个字节。

于 2010-07-26T16:43:44.280 回答