[英]Should I use Stream.Flush before Stream.CopyTo?
我有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
文檔說:
復制從當前流中的當前位置開始,並且在復制操作完成后不會重置目標流的位置。
我認為您不需要用內存流調用Stream.Flush
,因為它什么都不做 :
重寫Stream.Flush方法,以便不執行任何操作。
https://msdn.microsoft.com/en-us/library/system.io.memorystream.flush(v=vs.110).aspx
基本上, Stream.Flush
是為您設計的,用於將內存緩沖區刷新到持久性存儲。 使用MemoryStream,Flush 不會執行任何操作 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.