【www.bbyears.com--网络相关】
使用 FileStream 选件类读取,写入,打开和关闭的文件在文件系统和操作其他文件相关的操作系统句柄,包括管道铺设、标准输入和标准输出。可以使用 Read、Write、CopyTo和 Flush 方法执行同步操作或 ReadAsync、WriteAsync、CopyToAsync和 FlushAsync 方法执行异步操作。 使用异步方法执行大量资源文件操作,而不必阻止主线程。 此性能注意事项非常重要。Windows 应用商店 app 或耗时的流操作会阻止 UI 线程并将您的应用程序显示的 桌面 app,就象它不起作用。 缓冲输入和输出以获得更好的性能
例子
废话不说,开始操作。
1.拖好控件、必须滴,将除了要写文件的文本框外,其他的文本框的 ReadOnly 属性均设为 True !
jquery1700010323288557426702="1" />
2.开始"选择文件"操作
代码如下privatevoid btnReadChoose_Click(object sender, EventArgs e)
{
//创建 打开文件 对话框,可以直接拖控件哈。。
OpenFileDialog ofd=new OpenFileDialog();
//将文件路径显示在文本框
if (ofd.ShowDialog() == DialogResult.OK)
{
txtReadPath.Text = ofd.FileName;
}
}
效果图。。。路径就显示出来了。
jquery1700010323288557426702="2" />
3.开始"读出"操作,并将文本内容显示在文本框.
其中先写出一个显示“温馨提示”消息的方法
代码如下#region 显示温馨提示的消息+void MsgShow(string Msg)
///
/// 显示温馨提示的消息
///
///消息
void MsgShow(string Msg)
{
lbResult.Text ="温馨提示:"+Msg;
}
#endregion
读出操作
privatevoid btnReadFile_Click(object sender, EventArgs e)
{
//创建文件流、流操作要进行异常处理,并以using来释放对象
try
{
using (FileStream fs =new FileStream(txtReadPath.Text, FileMode.Open))
{
//定义缓存区,3M 大小
byte[] arrFileData =newbyte[1024*1024*3];
//读文件 存在 arrFileData 中
fs.Read(arrFileData, 0, arrFileData.Length);
//转 编码格式 以便显示在 文本框 txtReadMsg 中
string ChangeToString = Encoding.Default.GetString(arrFileData);
txtReadMsg.Text = ChangeToString;
MsgShow("文本读取成功!!!");
}
}
catch (Exception ex)
{
MessageBox.Show("异常:"+ ex.Message);
}
}
4.开始"写入"操作,选择文件就不累赘了,差不多.
代码如下privatevoid btnWriteFile_Click(object sender, EventArgs e)
{
//获取要写入文本的数据
string strWriteData = txtWriteMsg.Text;
try
{
using (FileStream fs =new FileStream(txtWritePath.Text, FileMode.Create))
{
//转为二进制写入文本
byte[] arrWriteData = Encoding.Default.GetBytes(strWriteData);
//fs.Write(数据缓存区,从第几个byte开始写,写多少个)
fs.Write(arrWriteData, 0, arrWriteData.Length);
MsgShow("写入文本成功!!!");
}
}
catch (Exception ex)
{
MessageBox.Show("异常:"+ ex.Message);
}
就这么滴,一个基于文件流FileStream的文本写入、读取小程序就完工了。主要是自己总结
总结
1)读写文件的五个步骤:创建文件流、创建读写器、读写文件、关闭读写器、关闭文件流。
(2)文件流的类是FileStream,创建一个文件流时,需要指定操作文本的路径、文件的打开方式和文件的访问方式。
(3)StreamWriter是一个写入器,StramReader是一个读取器。读写文本文件可以直接使用读写器,不用创建文件流,但是不容易控制文本的打开方式和访问方式
(4)File类用于对文件进行操作,如复制、移动、删除等,Directory类用于对文件夹操作,它们都是静态类。
(5)静态类只包含静态成员,非静态类可以包含静态成员;静态类不能包含实例成员,非静态类可以包含实例成员;静态类使用类名访问其成员,非静态类使用它的实例对象访问成员。
(6)FileInfo类与File类功能类似,也可以完成对文件的基本操作。不同的是File类不可以实例化对象。如果打算多次重用某个文件对象,可以优先考虑使用FileInfo类,因为并不总是需要安全检查
(7)DirectoryInfo类与Directory类功能类似,可以完成对文件夹的基本操作。如果打算多次重用某个目录对象,可以考虑使用DirectoryInfo类的实例方法