流失位元組序列的抽象概念,如檔案的操作,輸入/輸出裝置,內部進行通訊的管道等,Stream類及其衍生類別提供這些不同類型的輸入和輸出的一般視圖,這樣的程式員就不必熟悉作業系統和基礎裝置的具體細節,也可以對流進行操作。
流常用的三個基本操作:
1. 讀取流:操作是從流到資料結構的資料轉送
2. 寫入流:該操作時從資料結構到流的資料轉送
3. 流支援尋找:尋找是對流內的當前位置進行查詢與修改
以上三個功能可以通過CanRead ,CanWrite,CanSeek屬性進行設定。
Read和Write方法支援讀寫各種不同格式的資料。對於支援尋找功能的流,可以使用Seek和SetLength方法以及Length和Position屬性查詢和修改流當前的位置和長度。
有些流實現執行資料的本地緩衝以提高效能。對於這樣的流,Flush方法可用於清除內部緩衝區並確保將所有資料寫入資料來源或儲存空間。
在實現Stream的衍生類別時,必須提供Read和Write方法的實現。非同步方法呼叫BeginRead,EndRead,BeginWrite和EndWrite通過同步方法Read和Write實現。ReadByte和WriteByte可以實現建立一個新的單元位元組數組,然後調用Read和Write實現。
檔案在操作時表現為流,即流是從一些輸入中讀取到的一系列位元組。
檔案按資訊在外部儲存空間上齶編碼方式可以分為文字檔和二進位檔案。
Stream類是System.IO命名空間中的一個類,在System.IO命名空間中,包含所有允許在資料流和檔案上進行同步和非同步讀取和寫入的類,下面簡單介紹一下常用的類。
1. Directory類:包含了所有操作目錄的靜態方法,如目錄的建立,移動,複製,刪除等
2. DirectoryInfo類:包含了所有操作目錄的執行個體方法,如目錄的各種屬性(名字,建立時間),目錄的各種操作(目錄的建立,是否存在,移動,刪除等)
3. File類:是對檔案的典型操作,提供文本的建立,開啟,複製,刪除,移動等靜態方法。也可以用於擷取檔案和設定檔案的基本資料。
4. FileInfo類:對檔案的典型操作, 提供文本的建立,開啟,複製,刪除,移動等執行個體方法。當檔案需要多次重用時,使用FileInfo類提供的執行個體方法,不可以使用File提供的靜態方法。
5. FileStream類:該類實現了對檔案讀取,寫入,開啟,關閉操作,支援隨機訪問檔案,可以使用同步方式開啟檔案進行讀寫,也可以用非同步方式開啟檔案進行讀寫。
6. Path類:該類對包含檔案或目錄路徑資訊的String執行個體操作,這些操作可以跨平台的方式執行的。
7. MemoryStream類:該類建立起支援儲存區為記憶體的流。
8. StreamReader類:該類可以讀取標準文字檔的內容。即實現一個TextReader。預設編碼格式為UTF-8。
9. StreamWriter類:該類可以往標準文字檔中寫入內容。即實現一個TextWriter。預設編碼格式為UTF-8。
10. StringReader類: 該類實現從字串進行讀取的TextReader。
11. StringWriter類:該類實現將資訊寫入字串,該資訊儲存在基礎的StringBuilder中。
12. TextReader類:該類表示可讀取連續字元系統的閱讀器。
13. TextWriter類:該類表示可以編寫一個有序字元系列的編輯器,是抽象類別。
程式碼範例:檔案的建立與檔案內容的輸入輸出
代碼
1 if(File.Exists(filePath))
2 {
3 File.Delete(filePath);
4 }
5 FileStream fs=File.Create(filePath,1024); //建立檔案
6 Byte[] info=new UTF8Encoding(true).GetBytes("測試內容");
7 fs.Write(info,0,info.Length); //向新建立的檔案寫入內容
8 fs.Close();
9
10 using(StreamReader sr=File.OpenText(filePath))
11 {
12 While(sr.ReadLine()!=null)
13 MessageBox.Show(sr.ReadLine());
14 }
參考代碼:
檔案屬性的擷取與設定:/Files/long-gengyun/FileAttribute.rar
顯示檔案夾中的檔案與子檔案夾:/Files/long-gengyun/GetDirectory.rar
檔案的列印輸出:/Files/long-gengyun/FilePrint.rar
電腦系統資訊擷取:/Files/long-gengyun/GetSystemInfo.rar