StreamReader 与 StreamWriter — 文本流读写#
来源:
D:\study\C#1\stu0731\StreamReader StreamWriter\Program.cs
StreamReader / StreamWriter 以文本为单位读写文件,支持逐行操作,是处理文本文件最常用的方式。
写入数据(StreamWriter)#
// 方式一:手动管理资源
FileStream fs = new FileStream(@"./账号.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter writer = new StreamWriter(fs);
writer.WriteLine("第一行内容");
writer.Close(); // 先关 StreamWriter
fs.Close(); // 再关 FileStream
// 方式二:using 自动释放资源(推荐)
using (FileStream fs = new FileStream(@"./账号.txt", FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("追加的一行");
sw.WriteLine("再追加一行");
}
} // 自动 Close + Dispose
StreamWriter 常用方法#
| 方法 | 说明 |
|---|---|
Write(value) |
写入内容(不换行) |
WriteLine(value) |
写入内容 + 换行 |
Close() |
关闭写入器 |
Flush() |
将缓冲区内容写入文件 |
读取数据(StreamReader)#
FileStream fs = new FileStream(@"./账号.txt", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
// 方式一:逐行读取
while (sr.ReadLine() != null)
{
Console.WriteLine(sr.ReadLine());
}
// 方式二:从头读到尾
string content = sr.ReadToEnd();
Console.WriteLine(content);
sr.Close();
fs.Close();
using 写法(推荐)#
using (FileStream fs = new FileStream(@"./data.txt", FileMode.Open, FileAccess.Read))
using (StreamReader sr = new StreamReader(fs))
{
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
StreamReader 常用方法#
| 方法 | 说明 | 返回值 |
|---|---|---|
Read() |
读取下一个字符 | int(-1 表示结束) |
ReadLine() |
读取一行 | string(null 表示结束) |
ReadToEnd() |
读取全部内容 | string |
Close() |
关闭读取器 | void |
using 语句#
using 语句确保在代码块结束时自动调用 Dispose(),即使发生异常也能正确释放资源。
// 等价写法:
using (var resource = new SomeResource())
{
// 使用 resource
}
// 编译器自动插入:finally { resource.Dispose(); }
最佳实践:所有实现了
IDisposable接口的类(FileStream、StreamReader、StreamWriter 等)都应使用using语句管理生命周期。
相关笔记#
- FileStream 字节流 — 底层字节流
- 文件 IO 概览 — 文件 IO 概览
- BinaryReader 与 BinaryWriter — 二进制读写
- 流程控制 — 异常处理(using 资源释放)