【发布时间】:2018-07-03 08:46:36
【问题描述】:
FileStream 缓冲它需要写入的字节。如果缓冲区已满,则将所有字节写入(刷新)到文件中。此写入过程可能需要一些时间。
由于添加到FileStream 的每个字节都可能导致Flush,因此写入函数具有async version。无需等待写入完成即可写入流。
Class StreamWriter 可以更轻松地向FileStream 写入文本。将数据写入StreamWriter 会导致数据写入底层流,因此可能会导致Flush。
这使得像StreamWriter.Write(int) 这样的函数可能会变慢。但是,除了写入字符或字符串外,这些函数没有异步版本。 WriteLine 甚至还有一个异步版本。
当我编写整数和双精度等相当小的对象时,是否不需要这些函数?
【问题讨论】:
-
如果您查看文档,您会发现这些方法中的大多数只是立即转过身来并在传入的值上调用
ToString()。很难看出它们提供了其他什么好处比打字少一点(请记住,这种类型可以追溯到 .NET 石器时代,因此当时的想法可能有所不同)。 -
流使用计时器自动刷新。所以它总是进行刷新(不会导致刷新)。除非你关闭自动冲洗。如果您不希望计时器运行关闭刷新,然后确保在关闭文件之前手动刷新,以便将所有数据写入文件。
-
TextWriter.Write(int)在 .NET 1.1 中一定看起来是个好主意,但你真的想在 2018 年使用它吗?停止这将解决这个问题和其他一些问题。
标签: c# stream async-await streamwriter