簡體   English   中英

我應該在Stream.CopyTo之前使用Stream.Flush嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM