C 對文字檔案的幾種讀寫方法總結

2021-10-03 23:30:05 字數 3652 閱讀 5034

讀取文字

如果你要讀取的檔案內容不是很多,可以使用 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...