讀取文字
如果你要讀取的檔案內容不是很多,可以使用 file.readalltext(filepath) 或指定編碼方式 file.readalltext(filepath, encoding)的方法。
它們都一次將文字內容全部讀完,並返回乙個包含全部文字內容的字串
string str = file.readalltext(@「c:\temp\ascii.txt」);
// 也可以指定編碼方式
string str2 = file.readalltext(@「c:\temp\ascii.txt」, encoding.ascii);
也可以使用方法file.readalllines。該方法返回乙個字串陣列。每一行都是乙個陣列元素。
string strs = file.readalllines(@「c:\temp\ascii.txt」);
// 也可以指定編碼方式
string strs2 = file.readalllines(@「c:\temp\ascii.txt」, encoding.ascii);
當文字的內容比較大時,我們就不要將文字內容一次讀完,而應該採用流(stream)的方式來讀取內容。.net為我們封裝了streamreader類。初始化streamreader類有很多種方式。下面我羅列出幾種
streamreader sr1 = new streamreader(@「c:\temp\utf-8.txt」);
// 同樣也可以指定編碼方式
streamreader sr2 = new streamreader(@「c:\temp\utf-8.txt」, encoding.utf8);
filestream fs = new filestream(@「c:\temp\utf-8.txt」, filemode.open, fileaccess.read, fileshare.none);
streamreader sr3 = new streamreader(fs);
streamreader sr4 = new streamreader(fs, encoding.utf8);
fileinfo myfile = new fileinfo(@「c:\temp\utf-8.txt」);
// opentext 建立乙個utf-8 編碼的streamreader物件
streamreader sr5 = myfile.opentext();
// opentext 建立乙個utf-8 編碼的streamreader物件
streamreader sr6 = file.opentext(@「c:\temp\utf-8.txt」);
初始化完成之後,你可以每次讀一行,也可以每次讀乙個字元 ,還可以每次讀幾個字元,甚至也可以一次將所有內容讀完。
// 讀一行
string nextline = sr.readline();
// 讀乙個字元
int nextchar = sr.read();
// 讀100個字元
int nchars = 100;
char chararray = new char[nchars];
int ncharsread = sr.read(chararray, 0, nchars);
// 全部讀完
string restofstream = sr.readtoend();
使用完streamreader之後,不要忘記關閉它: sr.closee();
streamreader sr = file.opentext(@「c:\temp\ascii.txt」);
string nextline;
while ((nextline = sr.readline()) != null)
sr.close();
寫入文字
寫檔案和讀檔案一樣,如果你要寫入的內容不是很多,可以使用file.writealltext方法來一次將內容全部寫如檔案。如果你要將乙個字串的內容寫入檔案,可以用file.writealltext(filepath) 或指定編碼方式 file.writealltext(filepath, encoding)方法。
string str1 = 「good morning!」; file.writealltext(@「c:\temp\test\ascii.txt」, str1); // 也可以指定編碼方式 file.writealltext(@「c:\temp\test\ascii-2.txt」, str1, encoding.ascii);
string strs = ; file.writealllines(@「c:\temp\ascii.txt」, strs); file.writealllines(@「c:\temp\ascii-2.txt」, strs, encoding.ascii);
使用file.writealltext或file.writealllines方法時,如果指定的檔案路徑不存在,會建立乙個新檔案;如果檔案已經存在,則會覆蓋原檔案。
當要寫入的內容比較多時,同樣也要使用流(stream)的方式寫入。.net封裝的類是streamwriter。初始化streamwriter類同樣有很多方式:
// 如果檔案不存在,建立檔案; 如果存在,覆蓋檔案
streamwriter sw1 = new streamwriter(@「c:\temp\utf-8.txt」);
// filemode.createnew: 如果檔案不存在,建立檔案;如果檔案已經存在,丟擲異常
filestream fs = new filestream(@「c:\temp\utf-8.txt」, filemode.createnew, fileaccess.write, fileshare.read);
// utf-8 為預設編碼
streamwriter sw3 = new streamwriter(fs);
streamwriter sw4 = new streamwriter(fs, encoding.utf8);
// 如果檔案不存在,建立檔案; 如果存在,覆蓋檔案
fileinfo myfile = new fileinfo(@「c:\temp\utf-8.txt」);
streamwriter sw5 = myfile.createtext();
初始化完成後,可以用streamwriter物件一次寫入一行,乙個字元,乙個字元陣列,甚至乙個字元陣列的一部分。
// 寫乙個字元
sw.write(『a』);
// 寫乙個字元陣列
char chararray = new char[100];
// initialize these characters
sw.write(chararray);
// 寫乙個字元陣列的一部分
sw.write(chararray, 10, 15);
同樣,streamwriter物件使用完後,不要忘記關閉。sw.close(); 最後來看乙個完整的使用streamwriter一次寫入一行的例子:
fileinfo myfile = new fileinfo(@「c:\temp\utf-8.txt」);
streamwriter sw = myfile.createtext();
string strs = ;
foreach (var s in strs)
sw.close();
C 對文字檔案的幾種讀寫方法總結
計算機在最初只支援ascii編碼,但是後來為了支援其他語言中的字元 比如漢字 以及一些特殊字元 比如 就引入了unicode字符集。基於unicode字符集的編碼方式有很多,比如utf 7 utf 8 unicode以及utf 32。在windows作業系統中,乙個文字檔案的前幾個位元組是用來指定該...
VBS對文字檔案的讀寫方法
讀例子 set fso createobject scripting.filesystemobject 繫結fso物件 if fso.fileexists s fileurl then 用.fileexists方法檢查檔案是否存在 set myfile fso.opentextfile s file...
C 文字檔案讀寫的方法
掌握文字檔案讀寫的方法 了解二進位制檔案的讀寫方法 c 檔案流 fstream 檔案流 ifstream 輸入檔案流 ofstream 輸出檔案流 建立乙個文字檔案並寫入資訊 同向螢幕上輸出資訊一樣將資訊輸出至檔案 1 include void main f.close 2 include incl...