Stream
System.IO為我們提供了一個抽象類Stream,Stream類支持對字節的讀寫操作。在Stream類中包括了對異步操作的支持。
既然Stream是抽象類,所有其它流的類就都必須從Steam類中繼承。Stream類及其子類共同構成了一個數據源和數據存儲的視圖,從而封裝了操作系統和底層存儲的各個細節,使程序員把注意力集中到程序的應用邏輯上來。
流包含以下基本操作:
讀操作(Reading)。即讀出流中的數據,把數據存放在另一種數據結構中,比如數組。
寫操作(Writting)。即從另一種數據結構中讀出數據,存放至流對象中。
搜索操作(Seeking)。即從流中的當前位置開始搜索,定位到指定的位置。
由於數據視圖的不同,一些流可能不同時支持以上的所有操作。比如網絡流就不支持搜索操作。Stream類提供了CanRead,CanWrite和CanSeek三種屬性,來表示流是否支持這些操作。
BinaryReader和BinaryWriter
BinaryReader和BinaryWriter這兩個類提供了從字符串或原始數據到各種流之間的讀寫操作。
File和Directory
File類支持對文件的基本操作,包括創建、拷貝、移動、刪除和打開一個文件。Directory類則用於執行常見的各種目錄操作,如創建、移動、浏覽目錄及其子目錄。
File類和Directory類都是密封類。不象抽象類Stream,File類和Directory類可以被實例化,但它們不能被其它類繼承。
File類和Directory類的基類都是抽象類FileSystemEntry。
Stream
File類的靜態方法主要是用於創建FileStream類。一個FileStream類的實例實際上代表一個磁盤文件,它通過Seek()方法進行對文件的隨機訪問,也同時包含了流的標准輸入、標准輸出、標准錯誤等。FileStream默認對文件的打開方式是同步的,但它同樣很好地支持異步操作。
TextReader和TextWriter
TextReader和TextWriter類都是抽象類。和Stream類的字節形式的輸入和輸出不同,它們用於Unicode字符的輸入和輸出。
StringReader和StringWriter
StringReader和StringWriter在字符串中讀寫字符。
StreamReader和StreamWriter
StreamReader和StreamWriter在流中讀寫字符。
BufferedStream
BufferedStream是為諸如網絡流的其它流添加緩沖的一種流類型。其實,FileStream流自身內部含有緩沖,而MemorySteam流則不需要緩沖。一個BufferStream類的實例可以由多個其它類型的流復合而成,以達到提高性能的目的。緩沖實際上是內存中的一個字節塊,利用緩沖可以避免操作系統頻繁地到磁盤上讀取數據,從而減輕了操作系統的負擔。
MemoryStream
MemoryStream是一個無緩沖流,它所封裝的數據直接放在內存中,因此可以用於快速臨時存儲、進程間傳遞信息等。
NetworkSteam
Networksteam表示在互聯網絡上傳遞的流。
當使用名字空間System.IO中提供的類時,對存儲數據的訪問權限必須符合操作系統的安全性要求。
注意:不要使用這些類來編寫應用程序對網絡文件進行的操作。因為Internet默認的安全政策是不允許對文件直接訪問。可以使用IsolatedStroage類來處理網絡文件。