精通 C# 文件流:StreamReader 与 StreamWriter 分步指南
在 C# 文件 I/O 中,流作为应用程序与底层文件系统的中介。它们以内存高效方式读写文件,尤其处理大数据集时。
不将整个 100 MB 文件加载到内存(导致应用冻结),流将数据分块处理。这种方式保持性能平滑、防止崩溃。
下面通过简明示例演示如何使用 StreamReader 和 StreamWriter 读写文件。按分步说明将这些模式集成到你的项目中。
StreamReader – 读取文件
StreamReader 类逐行读取文本文件,数据经缓冲区传递给应用处理。
假设 D 盘有 Example.txt,包含两行:
- Guru99 – .Net
- Guru99 – C#
创建控制台应用,在 Program.cs 添加以下代码:

using System;
using System.IO;
namespace DemoApplication {
class Tutorial {
static void Main(string[] args) {
string path = @"D:\Example.txt";
using (StreamReader sr = File.OpenText(path)) {
string line;
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
}
Console.ReadKey();
}
}
}
解析:
- 用
File.OpenText实例化StreamReader,以只读模式打开文件。 ReadLine()逐行读取,将数据从文件传至缓冲区再到line变量。- 每行输出到控制台。
在 Visual Studio 运行程序显示:

Example.txt 两行正确显示,证明读取器按预期工作。
StreamWriter – 写入文件
反之,StreamWriter 通过缓冲区将文本从应用写入文件。下面简单示例向同一 Example.txt 追加一行。

using System;
using System.IO;
namespace DemoApplication {
class Tutorial {
static void Main(string[] args) {
string path = @"D:\Example.txt";
using (StreamWriter sw = File.AppendText(path)) {
sw.WriteLine("Guru99 – ASP.Net");
}
Console.WriteLine(File.ReadAllText(path));
Console.ReadKey();
}
}
}
解析:
- 用
File.AppendText实例化StreamWriter,以追加模式打开文件。 WriteLine()写入新行,将文本推入缓冲区再写入文件。using块自动关闭写入器。- 用
File.ReadAllText读取整个文件内容确认写入。
执行程序显示:

控制台显示全部三行,确认新条目成功追加。
关键要点
- 流将文件 I/O 与应用逻辑解耦,支持大文件高效处理。
- 用
StreamReader逐行读取文本。 - 用
StreamWriter写入或追加文本,确保关闭流释放文件句柄。
C语言
- C++ for 循环详解:语法、执行流程与实战示例
- 掌握 C++ switch-case:语法、用法与实战示例
- C++ 动态数组分配实战指南:new/delete、初始化、扩容与内存管理
- C++ 流精通:cout、cin、cerr、clog 实战指南
- C++ std::stack 完全指南:核心操作、实战示例与 STL 应用
- C++ 结构体详解:定义、初始化、指针、函数参数与局限性
- C++ 类与对象实战指南:封装、构造函数、析构函数与访问控制
- C++ 多态详解:编译时/运行时多态、函数重载、运算符重载、虚函数与覆盖
- 掌握 C++ std::list:语法、函数与实战示例
- C# 抽象类实战教程:从定义到派生的完整代码示例
- C# 集合实战教程:ArrayList、Stack、Queue、Hashtable 等核心类型全解析
- Java BufferedReader 读取文件:实战指南与示例