C# StreamWriter - 流何时写入文件?

10

在我的应用程序中,我正在使用StreamWriter将数据流式写入文件。在调用Close()方法之前,是否有任何字节被写入文件?如果答案是否定的,那么无论流的大小如何都是正确的吗?

Randy

3个回答

17

StreamWriter有一个内部缓冲区,一旦该缓冲区满了,它就会被刷新到磁盘。您可以通过调用Flush()随时强制将其刷新到磁盘。

如果愿意的话,您可以在StreamWriter的构造函数中指定所需的缓冲区大小。


4
Flush()方法并不保证将数据实际写入磁盘,它只是将CLR缓冲区刷新到操作系统缓冲区。请参阅此问题 - bavaza

0

5
我不会给你点踩,但这并不完全正确。是的,Flush会达到这个效果,但在关闭之前流被写入的情况并不仅限于此。请参考马特·格里尔的回答。 - Adam Robinson
1
这是如何强制写入的,但也可以通过设置AutoFlush()来写入,以及在刷新命令发出之前内部缓冲区填满的情况下。 - GrayWizardx

0

它取决于所使用的底层流、该流中缓冲区的大小和其他因素。

您可以通过在 StreamWriter 上调用 flush() 强制将写入操作写入底层流。

我假设根据您的问题,您正在使用文件流。 根据我的经验,刷新通常会发生在每个1-4K数据之间,但我不确定确切的点在哪里。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接