我有MemoryStream,我正在使用StreamWriter填充一些数据。最后,我想将其转储到不同的流(并不总是文件)。
我应该在使用 Steram.CopyTo 方法之前调用 Stream.Flush 吗?
您永远不需要在内存流上调用Flush
,因为该操作不执行任何操作。如果查看源代码,则实现为空。写入后,您确实需要倒带流。
但是,您需要刷新StreamWriter
,以确保在开始复制之前将所有数据推送到内存流中。
您可以将此模式与StreamWriter
写入内存流一起使用,以避免显式刷新:
MemoryStream memStream = ...
using (StreamWriter wr = new StreamWriter(memStream)) {
... // Do the writing
}
memStream.Position = 0; // Rewind
// At this point `memStream` has all data pushed into it,
// and is positioned at zero, so it's ready to be copied.
我应该在使用 Stream.CopyTo 方法之前调用 Stream.Flush 吗?
不,没有必要打电话给Flush
。但是,您需要在MemoryStream
上将Position
重置为 0 .
CopyTo
文档说:
复制从当前流中的当前位置开始,并且在复制操作完成后不会重置目标流的位置。