問題:FileStream vs /差別StreamWriter?
dotnet中FileStream和StreamWriter有什麼不同?
你應該使用什麼上下文?他們的優點和劣勢是什麼?
是否可以將這兩個結合爲一個?
問題:FileStream vs /差別StreamWriter?
dotnet中FileStream和StreamWriter有什麼不同?
你應該使用什麼上下文?他們的優點和劣勢是什麼?
是否可以將這兩個結合爲一個?
dotnet中FileStream和StreamWriter有什麼不同?
A FileStream
是Stream
。像所有Streams一樣,它只處理byte[]
數據。
A StreamWriter : TextWriter
,是一個Stream-decorator。 TextWriter將字符串或字符的文本數據編碼爲byte[]
,然後將其寫入鏈接的Stream
。
你應該使用哪種上下文?他們的優點和劣勢是什麼?
當您有byte[]
數據時,您使用一個空的FileStream。當你想寫文本時,你添加一個StreamWriter
。使用格式化程序或序列化程序來編寫更復雜的數據。
是否可以將這兩個結合爲一個?
是的。你總是需要一個Stream來創建一個StreamWriter。輔助方法System.IO.File.CreateText("path")
將組合創建它們,然後您只需Dispose()外部寫入器。
FileStream明確用於工作文件。
一個StreamWriter可用於流式傳輸到任何類型的Stream - 網絡套接字,文件等
ScottGu解釋不同的Stream對象相當不錯的位置:http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
流的優秀參考,雖然它不包括隨機訪問R/W流。特別是序列化/反序列化信息和非文件流的演示非常有用。 +1 – ThunderGr 2013-10-05 08:26:40
那麼從MSDN的FileStream
:
在文件周圍公開流,支持同步和異步讀寫操作。
和MSDN爲StreamWriter
:
實現用於在一個特定的編碼寫入字符到一個流一個TextWriter。
最明顯的區別是FileStream
允許讀/寫操作,而StreamWriter
是隻寫的。
的StreamWriter
頁接着補充:
的StreamWriter被設計用於在特定的編碼字符輸出,而從流導出類被設計爲字節輸入和輸出。
因此,第二個區別是FileStream
是用於字節,而StreamWriter
用於文本。
它們是用於向已知數據源輸出信息的兩個不同級別。
FileStream是Stream的一種類型,它在概念上是一種指向某個位置並可以處理來往和來自該位置的傳入和/或傳出數據的機制。存在用於讀/寫文件,網絡連接,內存,管道,控制檯,調試和跟蹤監聽器以及其他幾種數據源的流。具體來說,存在一個FileStream來執行讀取和寫入文件系統。大多數數據流在使用時都非常低級,並將數據作爲字節來處理。
StreamWriter是一個Stream的包裝器,它簡化了使用該流輸出純文本。它公開的是一些採用字符串而不是字節的方法,並對字節數組進行必要的轉換。還有其他作家;另一個主要使用的是XmlTextWriter,它便於以XML格式編寫數據。也有讀者對應的作家,類似地包裝一個流,並方便獲取數據。
一個關鍵區別(除了上面的註釋),可能是FileStream支持隨機磁盤讀取和寫入任何指定的FileStream.Position。對於大文件修改,這可能是非常寶貴的。
同樣重要的是要注意`FileStream`是一種類型的流,專門針對文件。 Streams本地處理字節,但是`StreamWriter`/Reader將在任何*流上寫入/讀取文本,而不僅僅是`FileStream`。例如,`MemoryStreams`,`NetworkStreams`等。 – iliketocode 2017-04-12 03:03:58