在C#的开发场景中,文件读取和写入是非常基础且常用的操作,无论是读取配置文件、存储日志数据还是处理用户上传的文件,都需要用到相关的文件操作能力。C#提供了多个类来支持文件读写,开发者可以根据实际需求选择合适的实现方式。

常用的文件读写类介绍
C#中处理文件读写最常用的类是StreamReader和StreamWriter,这两个类分别用于读取文本文件和写入文本文件,使用起来简单直观。除此之外,File类也提供了静态方法可以快速实现简单的文件读写操作,适合不需要复杂处理的场景。
StreamReader类
StreamReader继承自TextReader,用于从流中读取字符数据,通常用来读取文本文件的内容。它支持指定编码格式,避免读取中文等非英文字符时出现乱码问题。
StreamWriter类
StreamWriter继承自TextWriter,用于将字符数据写入流中,通常用来向文本文件写入内容。同样支持指定编码格式,也可以设置是否追加写入而不是覆盖原有内容。
文件读取的实现方法
使用StreamReader读取文件
使用StreamReader读取文件时,需要先创建实例指定要读取的文件路径,然后调用读取方法获取内容,最后记得关闭流释放资源,也可以使用using语句自动释放。
using System;
using System.IO;
using System.Text;
class FileReadDemo
{
static void Main()
{
string filePath = "test.txt";
// 使用using语句自动释放StreamReader资源
using (StreamReader reader = new StreamReader(filePath, Encoding.UTF8))
{
// 读取全部内容
string content = reader.ReadToEnd();
Console.WriteLine("文件内容:");
Console.WriteLine(content);
}
}
}使用File类快速读取文件
如果是简单的读取场景,不需要复杂的流操作,可以直接使用File类的静态方法ReadAllText,一行代码就能完成读取,同样可以指定编码格式。
using System;
using System.IO;
using System.Text;
class FileReadDemo2
{
static void Main()
{
string filePath = "test.txt";
// 直接读取全部内容,指定UTF8编码
string content = File.ReadAllText(filePath, Encoding.UTF8);
Console.WriteLine("文件内容:");
Console.WriteLine(content);
}
}文件写入的实现方法
使用StreamWriter写入文件
使用StreamWriter写入文件时,可以指定是否追加写入,如果第二个参数传true则会在文件末尾追加内容,传false或者不传则会覆盖原有内容。
using System;
using System.IO;
using System.Text;
class FileWriteDemo
{
static void Main()
{
string filePath = "output.txt";
// 使用using语句自动释放StreamWriter资源,第二个参数true表示追加写入
using (StreamWriter writer = new StreamWriter(filePath, true, Encoding.UTF8))
{
writer.WriteLine("这是新写入的一行内容");
writer.WriteLine("当前时间:" + DateTime.Now.ToString());
}
Console.WriteLine("文件写入完成");
}
}使用File类快速写入文件
简单的写入场景可以使用File类的WriteAllText方法,直接写入全部内容,如果需要追加内容可以使用AppendAllText方法。
using System;
using System.IO;
using System.Text;
class FileWriteDemo2
{
static void Main()
{
string filePath = "output.txt";
string content = "这是要写入的文件内容" + Environment.NewLine + "第二行内容";
// 写入全部内容,覆盖原有内容
File.WriteAllText(filePath, content, Encoding.UTF8);
// 追加内容
File.AppendAllText(filePath, Environment.NewLine + "这是追加的内容", Encoding.UTF8);
Console.WriteLine("文件写入完成");
}
}注意事项
- 操作文件时要注意异常处理,比如文件不存在、没有读写权限等情况,建议使用try-catch语句捕获IOException等异常。
- 读取和写入非文本文件时,需要使用FileStream类操作字节流,而不是StreamReader和StreamWriter。
- 使用完流之后一定要及时释放资源,避免文件被占用导致后续操作失败,优先使用using语句自动释放。
- 如果处理的文件内容较大,不要一次性读取全部内容到内存,可以逐行或者分段读取,避免内存溢出。
| 操作场景 | 推荐使用的类/方法 | 特点 |
|---|---|---|
| 简单文本读取 | File.ReadAllText | 代码简洁,适合小文件 |
| 复杂文本读取/大文件读取 | StreamReader | 可逐行读取,支持自定义编码 |
| 简单文本写入 | File.WriteAllText/AppendAllText | 代码简洁,适合小文件 |
| 复杂文本写入/大文件写入 | StreamWriter | 可逐行写入,支持追加模式 |
| 非文本文件操作 | FileStream | 操作字节流,适合图片、视频等文件 |
以上就是C#中读取和写入文件的常用方法,开发者可以根据实际场景选择合适的方式,只要注意资源释放和异常处理,就能稳定实现文件操作功能。
C#文件读取文件写入StreamReaderStreamWriter修改时间:2026-06-08 16:33:29