2010-01-04 72 views

回答

18

StreamWriter有一個內部緩衝區,一旦該緩衝區已滿,它將被刷新到磁盤。你可以通過調用Flush()

隨時強制它刷新到磁盤。如果你願意,你可以指定在StreamWriters的構造函數中有多大的緩衝區。

+1

Flush()不保證實際寫入磁盤 - 它只是將CLR緩衝區刷新到OS緩衝區。看[這個問題](http://stackoverflow.com/questions/383324/how-to-ensure-all-data-has-been-physically-written-to-disk)。 – bavaza 2014-09-09 13:53:13

2

流寫的是StreamWriter.Flush

+5

我不會downvote,但這不完全正確。是的,'Flush'就可以做到這一點,但這肯定不是關閉前寫入流的* only *時間。請看Matt Greer的回答。 – 2010-01-04 19:35:27

+1

即你可以強制它寫入,但它也可以通過設置AutoFlush()以及如果在發出刷新之前填充內部緩衝區來寫入。 – GrayWizardx 2010-01-04 19:35:43

0

它取決於正在使用的底層流,該流中緩衝區的大小以及其他因素。

您可以通過調用StreamWriter上的flush()來強制寫入底層流。

我從你的問題中假設你正在使用下面的文件流。根據我的經驗,刷新通常發生在每1-4K數據之間,但我不確定確切點是什麼。

相關問題