C#文件的读取和写入
1、 创建文本文件并向文本文件中写入utf-8的文本内容,主要使用的是FileStream类和File类。下面是实例实在C#的控制台应用程序中执行的,首先在该类下面写一个方法用于根据文件路径和输入的内容创建文件并写入内容,然后在Main方法中使用该方法,代码如下
static void Main(string[] args)
{
//调用
if (createutf_8file("梦想还是要有的,万一实现了呢", "F:\\LinJinRui\\test1.txt"))
{
Console.Write("文件创建成功!"); //如果成功则在控制台输出信息
}
Console.Read();
}
private static Boolean createutf_8file(string strText,string strPath)
{
//声明一个Boolean变量返回文件是否新增成功
Boolean blstate = false;
if (!File.Exists(strPath)) //根据文件路径判断文件是否存在
{
//使用using语句创建实现了IDisposable接口的类,当using语句块结束后,
//程序会自动调用IDisposable接口的Dispose方法来销毁创建的实例。
using (StreamWriter sw = File.CreateText(strPath)) //创建用于写入 UTF-8 编码的文本
{
sw.Write(strText); //向写入流中写入内容
blstate = true; //成功即返回true
}
}
else //文件存在就删除文件
{
File.Delete("F:\\LinJinRui\\writetext.txt"); //使用File 操作文件的静态类的Delete的方法删除文件
using (StreamWriter sw = File.CreateText(strPath)) //创建用于写入 UTF-8 编码的文本
{
sw.Write(strText); //向写入流中写入内容
blstate = true; //成功即返回true
}
return true;
}
return blstate;
}
输出结果:
2、 OpenWrite和OpenRead方法对现有文件进行写入和读取。
OpenWrite 对现有的文件进行写入操作,OpenRead 打开现有文件进行读取,因为OpenWrite需要对现有文件内容进行写入或者编辑,下面的实例我就用WindowsForms窗体应用程序来实现。
(1) 窗体布局如下
(2) 后台代码
/// <summary>
/// (打开(文件)按钮点击事件)读取文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Open_Click(object sender, EventArgs e)
{
try
{
openFileDialog1.Filter = "文本文件(*.txt)|*.txt"; //设置打开文件的类型
openFileDialog1.ShowDialog(); //打开选择文件对话框
TextFileName.Text = openFileDialog1.FileName; //获取打开的文件名
FileStream fs = File.OpenRead(openFileDialog1.FileName);打开现有文件以进行读取
byte[] bs = new byte[1024]; 定义缓存
while (fs.Read(bs,0,bs.Length) >0) //每次读取1024个字节 ,判断结果是否大于0
{
textContext.Text = Encoding.Default.GetString(bs); //把字节数组所有字节转为一个字符串
}
fs.Close(); //关闭文件流
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 写入按钮点击事件(向文件写入内容)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnWrite_Click(object sender, EventArgs e)
{
if (TextFileName.Text != "")
{
if (textContext.Text != "")
{
//通过指定文件获取文件流
FileStream fs = File.OpenWrite(TextFileName.Text);
//将字符串转换为字节数组
Byte[] info = Encoding.Default.GetBytes(textContext.Text);
//向文件流中写入文件
fs.Write(info, 0, info.Length);
fs.Close(); //关闭文件流
MessageBox.Show("文件保存成功!");
}
else
{
MessageBox.Show("文件内容不能为空");
}
}
else
{
MessageBox.Show("文件路径不能为空");
}
}
(3) 结果,我在内现有文件内容后面追加“------马云”,结果如下
拓展:StreamReader 类可以和File的OpenText配合使用,用于读取utf-8文本文件的内容
语法:
//打开UTF-8 编码文本文件
StreamReader sr=File.OpenText(“文件路径”);
//读取文件内容 ReadToEnd:该方法用于读取读取流的文本内容,从当前位置读取到文件//末尾
String strtext=sr.ReadToEnd();