0

J'ai un FileSyncProvider et je l'ai écrit une implémentation personnalisée du FullEnumerationSimpleSyncProvider. Lorsque les fichiers sont synchronisés à partir du FullEnumerationSimpleSyncProvider vers le FileSyncProvider ils sont créés correctement, mais sont zéro octets.personnalisés SimpleSyncProvider création zéro fichiers octet

Lors de la synchronisation dans l'autre sens (FileSyncProvider comme source) tout fonctionne comme prévu. Ceci est l'implémentation IFileDataRetriever J'ai mis des points d'arrêt sur FileStream propriété setter et getter et la taille propriété du Stream est toujours correct, jamais zéro. Le véritable Stream lui-même est un MemoryStream, pourrait-il causer des problèmes?

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; } 
} 

Mise à jour:

Si, à titre expérimental, je modifie le code comme ci-dessous, un fichier de 5 octets est créé:

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

Alors cela me dit que cela devrait fonctionner bien avec un MemoryStream. Si je mets un point d'arrêt sur le getter, il semble toujours valide à chaque fois qu'il est appelé - il a la bonne taille, etc, pas 0 comme taille.

Répondre

0

Je l'ai! Tout ce que je devais faire était de réinitialiser la position du flux à 0. C'était à la fin du flux, d'où l'écriture de 0 octets.

Questions connexes