我有MemoryStream,我正在使用StreamWriter填充一些数据。 最后我想把它转储到不同的流(不总是文件)。
我应该在使用Steram.CopyTo方法之前调用Stream.Flush吗?
答案 0 :(得分:2)
您永远不需要在内存流上调用 [...]
if (isset($param['unique_id'])) {
$query->field('id')->equals($param['unique_id']);
}
return $query->eagerCursor(true)->getQuery()->getSingleResult();
[...]
,因为该操作不执行任何操作。如果查看源代码,则实现为空。您需要在写完后回滚流。
但是,您需要刷新Flush
,以确保在开始复制之前将所有数据推送到内存流中。
您可以使用此模式将StreamWriter
写入内存流,以避免显式刷新:
StreamWriter
答案 1 :(得分:1)
我应该在使用Stream.CopyTo方法之前调用Stream.Flush吗?
不,不需要致电Flush
。但是,您需要将Position
上的MemoryStream
重置为0.
CopyTo
文档说:
从当前流中的当前位置开始复制,并且在复制操作完成后不会重置目标流的位置。
答案 2 :(得分:1)
我认为您不需要使用内存流来调用Stream.Flush
,因为它没有:
覆盖Stream.Flush方法,以便不执行任何操作。
https://msdn.microsoft.com/en-us/library/system.io.memorystream.flush(v=vs.110).aspx
基本上,Stream.Flush
旨在将内存缓冲区刷新到持久存储。使用MemoryStream,Flush 不会执行任何操作。