2016-02-21 87 views
5

我試圖使用StreamWriter登錄每次有人搜索我的程序時搜索。我可以讓StreamWriter編寫一個新文件,但它不會創建任何內容。我試着搜索谷歌正確的使用,對我來說,它看起來像我做得很對。如果你能閱讀我的代碼並告訴我我錯在哪裏,那麼我將非常感謝!C# - StreamWriter正在創建我的文件,但沒有內容

StreamWriter write = new StreamWriter("searchLogFile.dat"); 
write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 

所以應該打印沿着線一條線的東西:「TITLE === $ 100.00」

回答

9

您還沒有關閉的作家。編寫者緩衝數據,所以如果您只是讓它在不刷新或關閉的情況下進行垃圾收集,文件句柄將被關閉,而不會將數據寫入文件。

理論上,應該有using語句做到這一點:

using (StreamWriter write = new StreamWriter("searchLogFile.dat")) 
{ 
    write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 
} 

這樣,即使有異常拋出作家將被關閉。養成使用using語句來實現IDisposable類型的習慣。

如果你只想寫一個值到文件,我還建議使用File.WriteAllText。您還可以使用的TextWriter.WriteLine其接受格式字符串的過載,使這個代碼更簡單:

writer.WriteLine("{0} === {1:C"}, gameTitle, saleValue); 

或用C#6:

writer.WriteLine($"{gameTitle} === {saleValue:C}"); 

或全部一氣呵成:

File.WriteAllText("searchLogFile.dat", $"{gameTitle} === {saleValue:C}"); 
相關問題