在讀寫文件的過程中,Filestream只可以進行以字節為單位原始數據流進行讀寫操作,為此,C#中提供了功能更加強大的StreamReader/ StreamWriter來支持文件的讀寫. StreamReader/ StreamWriter可以進行以字符為單位的數據讀寫操作..
一. 用StreamReader的構造函數
StreamReader有很多的構造函數:在這裡只列出兩個常用和比較常見的
StreamReader sr=new StreamReader (Stream); Stream可以是Filestream;
StreamReader sr=new StreamReader (String); String為指定的文件名初始化 StreamReader 類的新實例。
例如:
//demo1
FileStream filest = new FileStream(@"c:\abc.txt", FileMode.Open, FileAccess.ReadWrite); StreamReader sr = new StreamReader(filest);
//demo2
StreamReader another = new StreamReader(@"c:\abc.txt");
兩個StreamReader都指向同一個文件.
StreamReader讀取文件中的數據的代碼:
FileStream filest = new FileStream(@"c:\abc.txt", FileMode.Open, FileAccess.ReadWrite);
StreamReader sr = new StreamReader(filest);
string strLine = sr.ReadLine();//讀取文件中的一行
while(strLine!=null)//判斷是否為空,表示到文件最後一行了
{
Console.WriteLine(strLine);
strLine = sr.ReadLine();
}
sr.Close();//關閉流
filest.Close();
程序運行結果和盤中abc.txt文件中的內容比較如下:
二. StreamWriter
StreamWriter 專門用於的向文件中寫數據的,它和StreamReader類似,只是一個負責向文件中寫數據,一個負責向文件中讀數據而已.
StreamWriter 構造函數也有很多.在這裡只舉例兩個構造函數.
StreamWriter sr=new StreamWriter (Stream); Stream可以是Filestream;
StreamWriter sr=new StreamWriter (String); String為指定的文件名初始化StreamWriter 類的新實例。
例如:
//demo1
FileStream filest = new FileStream(@"c:\abc.txt", FileMode.Open, FileAccess.ReadWrite); StreamWriter sw = new StreamWriter (filest);
//demo2
StreamWriter another = new StreamWriter (@"c:\abc.txt");下面的例子可以讓大家掌握寫文件的方法.
FileStream filewriter = new FileStream(@"C:\abc.txt", FileMode.Append, FileAccess.Write);
以追加的方式打開文件,並進行寫入操作.
StreamWriter sw = new StreamWriter(filewriter); 構造函數;
for (char mychar = 'a'; mychar <= 'z'; mychar++)
{
sw.Write(mychar);//將從a—z26個小寫字母寫入文件中.
}
sw.Close();filewriter.Close();
//demo
FileStream filest = new FileStream(@"c:\abc.txt", FileMode.Open, FileAccess.ReadWrite);
StreamReader sr = new StreamReader(filest);
string strLine = sr.ReadLine();
while(strLine!=null)
{
Console.WriteLine(strLine);
strLine = sr.ReadLine();
}
sr.Close();
filest.Close();
以上兩圖是輸出內容和abc.txt中內容的比較.
請大家仔細研讀本程序.