C 文字檔案 txt 讀寫

2022-03-15 05:07:32 字數 4316 閱讀 4541

如果你要讀取的檔案內容不是很多,可以使用 file.readalltext(filepath) 或指定編碼方式 file.readalltext(filepath, encoding)的方法。它們都一次性將文字內容全部讀完,並返回乙個包含全部文字內容的字串

string str1 = file.readalltext(@"

c:\temp\a.txt

");

//也可以指定編碼方式

string str2 = file.readalltext(@"

c:\temp\a.txt

", encoding.ascii);

也可以使用方法file.readalllines,該方法一次性讀取文字內容的所有行,返回乙個字串陣列,陣列元素是每一行的內容

string strs1 = file.readalllines(@"

c:\temp\a.txt

");

//也可以指定編碼方式

string strs2 = file.readalllines(@"

c:\temp\a.txt

", encoding.ascii);

當文字的內容比較大時,我們就不要將文字內容一次性讀完,而應該採用流(stream)的方式來讀取內容。

.net為我們封裝了streamreader類,它旨在以一種特定的編碼從位元組流中讀取字元。streamreader類的方法不是靜態方法,所以要使用該類讀取檔案首先要例項化該類,在例項化時,要提供讀取檔案的路徑。例項化streamreader類有很多種方式。下面我羅列出幾種:

streamreader sr1 = new streamreader(@"

c:\temp\a.txt

");

//同樣也可以指定編碼方式

streamreader sr2 = new streamreader(@"

c:\temp\a.txt

", encoding.utf8);

filestream fs = new filestream(@"

c:\temp\a.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\a.txt

");

//opentext 建立乙個utf-8 編碼的streamreader物件

streamreader sr5 =myfile.opentext();

//opentext 建立乙個utf-8 編碼的streamreader物件

streamreader sr6 = file.opentext(@"

c:\temp\a.txt

");

初始化完成之後,你可以每次讀一行,也可以每次讀乙個字元 ,還可以每次讀幾個字元,甚至也可以一次將所有內容全部讀完

//

讀一行

string nextline =sr.readline();

//讀乙個字元

int nextchar =sr.read();

//讀100個字元

int n = 100

; char chararray = new

char

[n];

int ncharsread = sr.read(chararray, 0

, n);

//全部讀完

string restofstream = sr.readtoend();

使用完streamreader之後,不要忘記關閉它: sr.close();

streamreader sr = file.opentext(@"

c:\temp\a.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\a.txt

", str1);

//也可以指定編碼方式

file.writealltext(@"

c:\temp\test\a.txt

", str1, encoding.ascii);

string strs = ; 

file.writealllines(

@"c:\temp\a.txt

", strs);

//也可以指定編碼方式

file.writealllines(@"

c:\temp\a.txt

", strs, encoding.ascii);

使用file.writealltext或file.writealllines方法時,如果指定的檔案路徑不存在,會建立乙個新檔案;如果檔案已經存在,則會覆蓋原檔案 

當要寫入的內容比較多時,同樣也要使用流(stream)的方式寫入

.net為我們封裝了streamwriter類,它以一種特定的編碼向位元組流中寫入字元。streamwriter類的方法同樣也不是靜態方法,所以要使用該類寫入檔案首先要例項化該類,例項化streamwriter類同樣有很多方式:

//

如果檔案不存在,建立檔案; 如果存在,覆蓋檔案

streamwriter sw1 = new streamwriter(@"

c:\temp\a.txt

");

//streamwriter sw2 = new streamwriter(@"

c:\temp\a.txt

", true

, encoding.utf8);

如果檔案不存在,建立檔案;如果檔案已經存在,丟擲異常

filestream fs = new filestream(@"

c:\temp\a.txt

", filemode.createnew, fileaccess.write, fileshare.read);

streamwriter sw3 = new

streamwriter(fs);

streamwriter sw4 = new

streamwriter(fs, encoding.utf8);

//如果檔案不存在,建立檔案; 如果存在,覆蓋檔案

fileinfo myfile = new fileinfo(@"

c:\temp\a.txt

");

streamwriter sw5 = myfile.createtext();

初始化完成後,可以用streamwriter物件一次寫入一行,乙個字元,乙個字元陣列,甚至乙個字元陣列的一部分

//

寫乙個字元

sw.write('a'

);//

寫乙個字元陣列

char chararray = new

char[100

]; sw.write(chararray);

//寫乙個字元陣列的一部分(10~15)

sw.write(chararray, 10, 15);

同樣,streamwriter物件使用完後,不要忘記關閉。sw.close(); 最後來看乙個完整的使用streamwriter一次寫入一行的例子:

fileinfo myfile = new fileinfo(@"

c:\temp\a.txt

");

streamwriter sw =myfile.createtext();

string strs = ;

foreach (var s in

strs)

sw.close();

C 文字檔案 txt 讀寫

c 文字檔案 txt 讀寫 目錄 前言 讀取txt檔案 寫入txt檔案 前言計算機在最初只支援ascii編碼,但是後來為了支援其他語言中的字元 比如漢字 以及一些特殊字元 比如 就引入了unicode字符集。基於unicode字符集的編碼方式有很多,比如utf 7 utf 8 unicode以及ut...

讀寫文字檔案

讀文字 function readtext filename string string vars string alltext string f textfile begin assignfile f,filename 將c myfile.txt檔案與f變數建立連線,後面可以使用f變數對檔案進行操...

matlab 讀寫txt文字檔案的方法

讀取txt檔案 matlab示例語句 filename,date,timestamp,direction,dayornight,weather,startframe,numframes,class textread info.txt s s s s s s s s s 1 cctv052x20040...