C# FileStream 對象
FileStream對象表示指向磁盤或網(wǎng)絡(luò)路徑上的文件的流。這個類提供了在文件中讀寫字節(jié)的方法,但經(jīng)常使用StreamReader或StreamWriter執(zhí)行這些功能。這是因為FileStream類操作的是字節(jié)和字節(jié)數(shù)組,而Stream類操作的是字符數(shù)據(jù)。字符數(shù)據(jù)易于使用,但是有些操作,如隨機文件訪問(訪問文件中間某點的數(shù)據(jù)),就必須由FileStream對象執(zhí)行。
還有幾種方法可以創(chuàng)建FileStream對象。其構(gòu)造函數(shù)具有許多不同的重載版本,最簡單的構(gòu)造函數(shù)僅有兩個參數(shù),即文件名和FileMode枚舉值。
FileStream aFile = new FileStream(filename, FileMode.<Member>);
FileMode枚舉包含幾個成員,指定了如何打開或創(chuàng)建文件。稍后介紹這些枚舉成員。另一個常用的構(gòu)造函數(shù)如下:
FileStream aFile =
new FileStream {filename, FileMode.<Member>, FileAccess,<Menuber>);
第三個參數(shù)是FileAccess枚舉的一個成員,它指定了流的作用。FileAceess枚舉的成員如表所示。
成 員 | 說 明 |
Read | 打開文件,用于只讀 |
Write | 打開文件,用于只寫 |
RcadWrite | 打開文件,用于讀寫 |
對文件進(jìn)行非FileAccess枚舉成員指定的操作會導(dǎo)致拋出異常。此屬性的作用是,基于用戶的權(quán)限級別改變用戶對文件的訪問權(quán)限。
在FileStream構(gòu)造函數(shù)不使用FileAccess枚舉參數(shù)的版本中,使用默認(rèn)值FileAccess. ReadWrite。
FileMode枚舉成員如下表所示。使用每個值會發(fā)生什么,取決于指定的文件名是否表示已有的文件。注意,這個表中的項表示創(chuàng)建流時該流指向文件中的位置,下一節(jié)將詳細(xì)討論這個主題。除非特別說明,否則流就指向文件的開頭處。
成 員 | 文件存在 | 文件不存在 |
Append | 打開文件,流指向文件的末尾處,只能與枚舉FileAccess.Write | 創(chuàng)建一個新文件。只能與枚舉 |
結(jié)合使用 | FileAccess.Write 結(jié)合使用 | |
Create | 刪除該文件,然后創(chuàng)建新文件 | 創(chuàng)建新文件 |
CreateNew | 拋出異常 | 創(chuàng)建新文件 |
Open | 打開文件,流指向文件開頭處 | 拋出異常 |
OpenOrCreate | 打開文件,流指向文件開頭處 | 創(chuàng)建新文件 |
Truncate | 打開文件,淸除其內(nèi)容。流指向文件開頭處,保留文件的初始創(chuàng) 建曰期 | 拋出異常 |
File和Filelnfo類都提供了 OpenRead()和OpenWrite()方法,更易于創(chuàng)建FileStream對象。前者打開了只讀訪問的文件,后者只允許寫入文件。這些都提供了快捷方式,因此不必以FileStream構(gòu)造函數(shù)的參數(shù)形式提供所有必要的信息。例如,下面的代碼行打開了用于只讀訪問的Data.txt文件:
FileStream aFile = File.OpenRead{"Data.txt");
下面的代碼執(zhí)行同樣的功能:
Filelnfo aFilelnfo = new Filelnfo("Data.txt");
FileStream aFile = aFilelnfo.OpenRead();
點擊加載更多評論>>