url: http://www.cnblogs.com/zhxhdean/archive/2012/02/20/2359605.html
題記
StreamReader,StreamWriter,StringReader,StringWriter每次看到這幾個詞的時候,就會混淆(理解不夠深刻),在使用過程中也經常犯渾,為了能更好的理解,寫下此文章。
正文
概念
首先,從字面可以看出,StreamReader,StringReader是用來讀操作,StreamWriter,StringWriter是用來寫操作。
接下來看這幾個類在類庫中的層次
上圖中,StreamReader,StringReader都派生自TextReader類(TextReader:表示可讀取連續字符序列的讀取器。抽象基類)
StreamReader從流中讀取字符
StringReader從字符串讀取字符
上圖中,StreamWriter,StringWriter派生自TextWriter類(TextWriter:表示可以編寫一個有序字符序列的編寫器。該類為抽象類。)
StreamWriter將字符寫入流
StringWriter將字符寫入字符串
代碼
reader操作
private static void StringRead()
{
string in_str ="流操作,字符操作,io操作";
string read_str, aParagraph = null;
StringReader sr = new StringReader(in_str);
while (true)
{
read_str = sr.ReadLine();
if (read_str != null)
{
aParagraph = aParagraph + in_str + " ";
}
else
{
aParagraph = aParagraph + "\n";
break;
}
}
}
private static void StreamRead()
{
Stream rStream = new FileStream(@"E:/20120214.txt", FileMode.Open);
StreamReader sr = new StreamReader(rStream, Encoding.UTF8);
//從流中讀取字符
string result = sr.ReadToEnd();
//釋放資源
sr.Close();
rStream.Close();
}
writer操作
private static void StreamWriter()
{
string in_str = DateTime.Now.ToString("MM-dd HH:mm:ss:fff");
//第二個參數 是否追加
StreamWriter sw = new StreamWriter(@"E:/20120214.txt",true,Encoding.Default);
sw.Write(in_str);
sw.Flush();
sw.Close();
}
private static void StringWriter()
{
StringWriter sw = new StringWriter();
sw.Write("文字,學習,文字,c#");
sw.Close();
}