我应该在 Stream.CopyTo 之前使用 Stream.Flush 吗?



我有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文档说:

复制从当前流

中的当前位置开始,并且在复制操作完成后不会重置目标流的位置。

相关内容

  • 没有找到相关文章

最新更新