2015-09-22 27 views
-3

我在我的代碼中使用StreamWriter而不使用或配置創建一個csv文件。它起初運行良好,但它總是生成第一次運行我的代碼時生成的相同文件。即使我更改了數據選擇,它也是同一個文件。然後我複製我的dll在一個不同的環境,只有沒有其他文件被更改,它仍然生成相同的文件,具有與以前的環境完全相同的數據。似乎我的代碼緩衝了第一次運行的數據,但是在哪裏?通過改變主機環境,爲什麼緩衝區沒有改變?StreamWriter在未使用或未使用的情況下如何存儲數據流?

+0

無代碼幫助很困難 – Backs

回答

0

當您創建StreamWriter時,它或者接受Stream來寫入或創建它自己的。 Stream實例使用緩衝來保存正在寫入且需要刷新的數據。這是在你Dispose,StreamStreamWriter時完成的,但如果你讓垃圾收集器完成,可能會被跳過。

這就是爲什麼你應該總是處置您的流當你與他們所做的,以及爲什麼你應該當你完成寫入數據,那麼你不想一個Stream呼叫Flush失去。代碼中的未處理異常會繞過您的Dispose,從而導致數據丟失。

我個人傾向於儘快處置Stream。除非你每秒鐘不斷地寫數百次,否則重新打開一個文件以便稍後追加更多的數據並不需要太多花費。

相關問題