通過做一個WinForm的小程序來快速理解文件流的使用
目的就是實現點擊選擇文件,可以將選中的文件讀取到下面的textbox中,
點擊保存文件,將textbox中的內容寫入到保存的文件中
1.讀取文件流
private void btnReadFile_Click(object sender, EventArgs e)
{
using (OpenFileDialog open=new OpenFileDialog())
{
//如果沒有選中任何文件就返回
if (open.ShowDialog()!=DialogResult.OK)
{
return;
}
txtFileName.Text = open.FileName;
//選中了那就讀取出來
using (FileStream fs=new FileStream(open.FileName,FileMode.Open,FileAccess.Read))
{
using (StreamReader sr=new StreamReader(fs,Encoding.Default))
{
//有一個循環控制讀取
while (!sr.EndOfStream)
{
//每次讀取一行
string line = sr.ReadLine();
this.txtFileMsg.Text += line;
}
}
}
}
}
2.寫入文件流
(1)第一種方式
private void btnSaveFile_Click(object sender, EventArgs e)
{
using (SaveFileDialog save=new SaveFileDialog())
{
if (save.ShowDialog() != DialogResult.OK)
{
return;
}
using (FileStream fs=new FileStream(save.FileName,FileMode.OpenOrCreate,FileAccess.Write))
{
string txt=txtFileMsg.Text;
//將內容寫到緩存中
byte[] myBuffer=Encoding.Default.GetBytes(txt);
fs.Write(myBuffer, 0, myBuffer.Length);
}
}
}
當然也可以模仿讀文件的方式
(2)第二種方式
using (FileStream fs=new FileStream(save.FileName,FileMode.OpenOrCreate,FileAccess.Write))
{
using (StreamWriter sw=new StreamWriter(fs,Encoding.Default))
{
sw.WriteLine(txtFileMsg.Text);
}
}
也可以直接使用StreamWrite
(3)第三種方式
using (StreamWriter sw=new StreamWriter(save.FileName,false,Encoding.Default,1024*1024))
{
sw.Write(txtFileMsg.Text);
sw.Flush();
}
有關文件流的一些知識:
(1)FileStream是一個一個字節的讀取,如果對文本文件需要讀取一部分顯示一部分則使用FileStream會有問題,
因爲可能FileStream會在讀取的時候把一個漢字的字節數分開
(2)對於讀取大文本文件一般使用SteamReader類
對於大文本文件寫入一般使用StreamWrite類