通过做一个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类