2010-01-04 75 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数据之间,但我不确定确切点是什么。

相关问题