各類Stream 的區別

Stream

System.IO爲咱們提供了一個抽象類Stream,Stream類支持對字節的讀寫操做。在Stream類中包括了對異步操做的支持。程序員

既然Stream是抽象類,全部其它流的類就都必須從Steam類中繼承。Stream類及其子類共同構成了一個數據源和數據存儲的視圖,從而封裝了操做系統和底層存儲的各個細節,使程序員把注意力集中到程序的應用邏輯上來。數組

流包含如下基本操做:安全

讀操做(Reading)。即讀出流中的數據,把數據存放在另外一種數據結構中,好比數組。網絡

寫操做(Writting)。即從另外一種數據結構中讀出數據,存放至流對象中。數據結構

搜索操做(Seeking)。即從流中的當前位置開始搜索,定位到指定的位置。異步

因爲數據視圖的不一樣,一些流可能不一樣時支持以上的全部操做。好比網絡流就不支持搜索操做。Stream類提供了CanRead,CanWrite和CanSeek三種屬性,來表示流是否支持這些操做。性能

BinaryReader和BinaryWriter

BinaryReader和BinaryWriter這兩個類提供了從字符串或原始數據到各類流之間的讀寫操做。spa

Stream

File類的靜態方法主要是用於建立FileStream類。一個FileStream類的實例實際上表明一個磁盤文件,它經過Seek()方法進行對文件的隨機訪問,也同時包含了流的標準輸入、標準輸出、標準錯誤等。FileStream默認對文件的打開方式是同步的,但它一樣很好地支持異步操做。操作系統

TextReader和TextWriter

TextReader和TextWriter類都是抽象類。和Stream類的字節形式的輸入和輸出不一樣,它們用於Unicode字符的輸入和輸出code

StringReader和StringWriter

StringReader和StringWriter在字符串中讀寫字符。

StreamReader和StreamWriter

StreamReader和StreamWriter在流中讀寫字符。

BufferedStream

BufferedStream是爲諸如網絡 流的其它流添加緩衝的一種流類型。其實,FileStream流自身內部含有緩衝,而MemorySteam流則不須要緩衝。一個BufferStream 類的實例能夠由多個其它類型的流複合而成,以達到提升性能的目的。緩衝其實是內存中的一個字節塊,利用緩衝能夠避免操做系統頻繁地到磁盤上讀取數據,從而減輕了操做系統的負擔。

MemoryStream

MemoryStream是一個無緩衝流,它所封裝的數據直接放在內存中,所以能夠用於快速臨時存儲、進程間傳遞信息等。

NetworkSteam

Networksteam表示在互聯網絡上傳遞的流。

當使用名字空間System.IO中提供的類時,對存儲數據的訪問權限必須符合操做系統的安全性要求。

注意:不要使用這些類來編寫應用程序對網絡文件進行的操做。由於Internet默認的安全政策是不容許對文件直接訪問。可使用IsolatedStroage類來處理網絡文件

BufferedStream 與MemoryStream 的區別

兩個都是緩衝區,BufferedStream並非將全部內容都存放到內存中,而MemoryStream則是。BufferedStream必須跟其 他流如FileStream結合使用,而MemoryStream則不用,雖然能夠把MemoryStream轉換爲其餘流。

相關文章
相關標籤/搜索