2009-11-09 5 views
2

Je passe certaines chaînes codées Base64 via WCF, et je tente de les écrire dans un fichier. Cependant, malgré le fait que mon objet FileStream a une longueur supérieure à 0, mon fichier sur le disque reste vide.FileStream.Write pas écrire dans le fichier

FileStream fs = new FileStream(Config.Instance.SharedSettings.SaveDir + StudyInstance.StudyId + "\\tmp.ext", FileMode.Create); 

EncodeBlock eb = new EncodeBlock(); 

while (eb.Part != eb.OfParts || eb.OfParts == 0) 
{ 
    eb.ToDecode = ps.StudyService.GetInstancePart(StudyInstance, s, eb.Part+ 1, Config.Instance.ClientSettings.AppData); 
    eb = Base64Encoder.Decode(eb); 
    fs.Write(eb.ToEncode, 0, eb.ToEncode.Length); 
} 

fs.Close(); 

longueur de eb.ToEncode est toujours supérieure à 0, fs.Length est toujours supérieur à 0, et pourtant mon fichier "tmp.ext" est créé, mais reste vide. fs.CanWrite est toujours aussi vrai.

+1

Comment sont vérifications que le fichier est vide? –

+1

Cela peut sembler être une évidence, mais avez-vous débogué le code pour vous assurer que vous entrez dans votre bloc WHILE? –

+0

C'était une évidence. La solution finale était pour moi de regarder le fichier '' tmp.ext "' du bon répertoire ... ne demandez pas, ça fait un de ces jours, mais merci à tous pour votre aide! –

Répondre

8

Avez-vous essayé d'appeler FileStream.Flush?

Appelez-le juste avant de fermer le flux.

Vous devez également utiliser une instruction "using" pour vous assurer que le flux est nettoyé.

+0

ce serait mon hypothèse –

+0

Je crois comprendre que la fermeture d'un FileStream vide automatiquement le tampon. Vous avez raison à propos de la déclaration 'using' –

Questions connexes