前面我們介紹過FileStream流,它是專門以字節形式處理的字節流。對於文本文件處理上不太方便,所以下面講解一下用於文本文件處理中經常使用到的StreamReder和StreamWriter流。
一、StreamReader流
StreamReader類用於讀取標準文本文件的各行信息。
1、重載構造函數
StreamReader(Stream) //指定流創建
StreamReader(string) //指定路徑創建
StreamReader(Stream,Encoding) //指定流和文件編碼創建
StreamReader(string,Encoding) //指定路徑和編碼創建
常用的構造函數如下:
string path=@"C:\123.txt";
StreamReader sd=new StreamReader(path);
StreamReader sd2=new StreamReader(path,Encoding.default);
2、常用的方法和屬性
Close //關閉StreamReader流
Equals //判斷兩個流是否相等
Read //讀取一個字符
ReadToEnd //從文件流當前位置一直讀取到文件尾
ReadLine //讀取一行。如果到我輸入流末尾,則爲空引用
3、過程
StreamReader讀取文本文件首先會利用File.OpenRead打開文件產生FileStream流,再通過StreamReader對FileStream將數據輸出到窗口或窗體控件上
二、StreamWriter
與StreamReader相反,StreamWriter是對文件進行寫操作的。
1、構造函數
StreamWriter(Stream) ; //指定流創建
StreamWriter(String) //指定路徑創建
StreamWriter(Stream,Encoding) //指定流和編碼創建
StreamWriter(String,bool append) //指定路徑和是否追加在文件後創建
常用的構造函數如下:
string path=@"123.txt";
StreamWriter sw=new StreamWriter(path);
StreamWriter sw2=new StreamWriter(path,true); //指定路徑打開,並追加到文件後面
注意的追加的問題,
如果文件存在,但是不追加則文件寫入時會從第一個字符開始改寫原有文件。
如果文件存在,同時也追加的話,會從相應的文件後面追加字符串。
如果文件不存在,則會直接創建文件。
舉個例子,如果123.txt的內容爲:ascdefghijklmnopqrstuvwxyz
如果追加,寫入的字符串爲1234567,則最終123.txt內容爲ascdefghijklmnopqrstuvwxyz1234567
如果不追加,寫入的字符串爲1234567,則最終的123.txt內容爲1234567hijklmnopqrstuvwxyz1234567
2、常用的方法和屬性
Close //關閉流
Equals //判斷流是否相等
Write //寫入流,不加換行符,可以寫入任何基本類型100,3.1415,‘a’,“asdasfad”,true等都可以
WriteLine //寫入流,追加換行符,可以寫入任何基本類型100,3.1415,‘a’,“asdasfad”,true等都可以
實例:
StreamWriter sw = new StreamWriter(@"C:\1111.txt",false);
sw.WriteLine(@"zheshiyiduan ceshi
de cengxu ");
sw.Write(@"1234567
823456789");
sw.Write(1024);
sw.WriteLine(2048);
sw.Close();
3、StreamWriter操作過程
首先通過File類的OpenWrite建立一個寫入文件流,然後通過StreamWriter的WriterLine方法將窗口或控件中的文本框的文本寫入到該流中。