1、什么是FileStream類
FileStream 類對文件系統上的文件進行讀取、寫入、打開和關閉操作,並對其他與文件相關的操作系統句柄進行操作,如管道、標准輸入和標准輸出。讀寫操作可以指定為同步或異步操作。FileStream 對輸入輸出進行緩沖,從而提高性能。——MSDN
簡單點說:FileStream類可以對任意類型的文件進行讀取操作,而且我們也可以根據自己需要來指定每一次讀取字節長度,以此減少內存的消耗,提高讀取效率。
2、File和FileStream的區別
直觀點:File是一個靜態類;FileStream是一個非靜態類。
File:是一個文件的類,對文件進行操作。其內部封裝了對文件的各種操作(MSDN:提供用於創建、復制、刪除、移動和打開單一文件的靜態方法,並協助創建FileStream對象)。
FileStream:文件流的類。對txt,xml,avi等文件進行內容寫入、讀取、復制...時候需要使用的一個工具。
打個形象的比喻。File是筆記本,需要Filestream的這個筆才能寫.
換而言之,記事本是一個文件,可以用File操作,里面的內容需要用FileStream來操作。
注:FileStream是對字節操作的(任何文件)。
1 //非靜態類,創建對象調用方法 2 using (FileStream Fsread = new FileStream(@"C:\Users\Administrator\Desktop\測試文檔.txt", FileMode.OpenOrCreate, FileAccess.Read)) 3 { 4 byte[] b = new byte[50]; 5 //用來限定每次的讀取字節數,也可以byte[] b=new byte[Fsread.Length]; 6 string s = ""; 7 while (true) 8 { 9 int r = Fsread.Read(b, 0, b.Length); 10 if (r == 0) 11 break; 12 s += Encoding.UTF8.GetString(b, 0, r); 13 14 } 15 Console.Write(s); 16 // Fsread.Close();//關閉當前流 17 // Fsread.Dispose();//釋放流所使用的資源 18 }
將創建文件流的過程寫在using中,可以自動幫助釋放流所占用的資源。
1 //文件流的寫入 2 using (FileStream fswrite = new FileStream(@"C:\Users\Administrator\Desktop\測試文檔.txt", FileMode.OpenOrCreate, FileAccess.Write)) 3 { 4 string str = "一切皆有可能"; 5 byte[] buffer = Encoding.UTF8.GetBytes(str); 6 fswrite.Write(buffer, 0, buffer.Length); 7 }
無論是讀還是寫,都要借助一個緩沖區buffer來存取字節。
注意:在寫入和讀取時,字符編碼格式要相同,不然會出現亂碼。
Encoding.UTF8.GetBytes(str);
Encoding.UTF8.GetString(b, 0, r);