1. 程式人生 > >【C#】System.IO.Stream 中flush的用法

【C#】System.IO.Stream 中flush的用法

MSDN:

有關建立檔案和向檔案中寫入文字的示例,請參見 如何:向檔案寫入文字 。有關從檔案中讀取文字的示例,請參見 如何:從檔案讀取文字 。有關讀取和寫入二進位制檔案的示例,請參見 如何:對新建的資料檔案進行讀取和寫入

在實現緩衝區的流上重寫 Flush 。使用此方法將所有資訊從基礎緩衝區移動到其目標或清除緩衝區,或者同時執行這兩種操作。根據物件的狀態,可能需要修改流內的當前位置(例如,在基礎流支援查詢的情況下即如此)。有關其他資訊,請參見 CanSeek

如果不顯式呼叫 Flush Close 的實現,重新整理流將不會重新整理其基礎編碼器。將

AutoFlush 設定為 true 意味著將資料從緩衝區重新整理到流中,但不重新整理編碼器狀態。這將允許編碼器保持其狀態(不完全字元),以便它可以正確地對下一個字元塊進行編碼。此方案影響 UTF8 和 UTF7,其中某些字元只能在編碼器收到相鄰的一個或多個字元後才能進行編碼。

總結:

在使用Stream的時候, 它的一頭連線和源位元組流相連,另外一頭與目標裝置相連(例如檔案, 緩衝區, 藍芽裝置等), 某些型別的Stream在與目標裝置的連結之間可以設定緩衝區。 Flush()函式的作用就是強制將當前的緩衝區的內容寫入目標裝置上面,為下一次的寫入做準備。

有些Stream流會儲存資料,當你呼叫Write()的時候其實可能不是立刻幫你把資訊傳導目標裝置上去,可能等到緩衝區不夠大或者stream.close() 之後才會進行傳輸操作,所以好的習慣是,定時利用Flush()控制好緩衝區