0

我有一个FileSyncProvider和我写的FullEnumerationSimpleSyncProvider的自定义实现。当文件从FullEnumerationSimpleSyncProvider同步到FileSyncProvider它们被正确创建,但是都是零字节。定制SimpleSyncProvider创建零个字节文件

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

这是我的IFileDataRetriever的实现。我已经在FileStream属性设置器和获取器和大小属性的放置断点永远是正确的,从不为零。实际本身是一个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的大小。

回答

0

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