【发布时间】:2010-01-04 19:30:38
【问题描述】:
在我的应用程序中,我使用 StreamWriter 将数据流式传输到文件。在调用 Close() 方法之前,是否有任何字节实际写入文件?如果答案是否定的,那么无论流有多大,这都是真的吗?
兰迪
【问题讨论】:
标签: c#
在我的应用程序中,我使用 StreamWriter 将数据流式传输到文件。在调用 Close() 方法之前,是否有任何字节实际写入文件?如果答案是否定的,那么无论流有多大,这都是真的吗?
兰迪
【问题讨论】:
标签: c#
StreamWriter 有一个内部缓冲区,一旦该缓冲区已满,它将被刷新到磁盘。你可以随时调用Flush()强制它刷新到磁盘
如果您愿意,可以在 StreamWriters 的构造函数中指定所需的缓冲区大小。
【讨论】:
Stream 由 StreamWriter.Flush 编写。
【讨论】:
Flush 会这样做,但这肯定不是在关闭之前写入流的唯一时间。请参阅 Matt Greer 的回答。
这取决于正在使用的底层流、该流中缓冲区的大小以及其他因素。
您可以通过在 StreamWriter 上调用 flush() 来强制写入底层流。
我从您的问题中假设您正在使用下面的文件流。根据我的经验,刷新通常发生在每 1-4K 数据之间,但我不确定确切的点是什么。
【讨论】: