2009-11-09 55 views
2

我正在通過WCF傳遞一些Base64編碼的字符串,並且我試圖將它們寫入文件。但是,儘管我的FileStream對象的長度大於0,我的磁盤上的文件仍爲空。FileStream.Write不寫入文件

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(); 

eb.ToEncode的長度始終大於0,fs.Length總是大於0,然而創建我的"tmp.ext"文件,但仍然爲空。 fs.CanWrite總是也是如此。

+1

如何驗證文件是否爲空? – 2009-11-09 23:03:04

+1

這看起來像是一件容易的事,但是您是否調試了代碼以確保您實際上正在進入WHILE塊? – 2009-11-09 23:09:46

+0

這是一件不容易的事。最終的解決方案是讓我看看正確的目錄的「tmp.ext」文件...不要問,這是那些日子之一,但感謝所有的幫助! – 2009-11-09 23:14:21

回答

8

您是否試過調用FileStream.Flush?

就在您關閉流之前調用它。

您還應該使用「using」語句來確保清理流。

+0

這將是我的假設 – 2009-11-10 11:27:40

+0

這是我的理解,關閉FileStream自動刷新緩衝區。你對'using'語句是正確的 – 2009-11-10 14:43:22