文件与流操作
File.ReadAllText/WriteAllText、StreamReader/Writer、异步 IO
文件与流操作
C# 的 System.IO 命名空间提供了简洁的文件 API——File 静态类一行读/写;Stream 处理大文件和网络流。
学完本章你将: 掌握 File.ReadAllText/WriteAllText、StreamReader/Writer、异步 IO。
File 静态类(最简单)
csharp
// 读
string content = File.ReadAllText("data.txt");
string[] lines = File.ReadAllLines("data.txt");
byte[] bytes = File.ReadAllBytes("image.png");
// 写
File.WriteAllText("output.txt", "Hello, C#!");
File.WriteAllLines("output.txt", new[] { "line1", "line2" });
File.AppendAllText("log.txt", $"[{DateTime.Now}] 事件\n");
// 判断
bool exists = File.Exists("data.txt");
// 删除
File.Delete("temp.txt");
StreamReader / StreamWriter(大文件)
csharp
// 逐行读(内存友好)
using var reader = new StreamReader("large.csv");
while (!reader.EndOfStream)
{
string? line = reader.ReadLine();
ProcessLine(line);
}
// 写文件
using var writer = new StreamWriter("output.txt");
writer.WriteLine("第一行");
writer.WriteLine("第二行");
异步 IO
csharp
// 异步读——不阻塞线程
string content = await File.ReadAllTextAsync("data.txt");
await File.WriteAllTextAsync("output.txt", "Hello async");
// 异步逐行读
await foreach (var line in File.ReadLinesAsync("large.csv")) // .NET 6+
{
await ProcessLineAsync(line);
}
Path 辅助类
csharp
string dir = Path.GetDirectoryName(fullPath);
string ext = Path.GetExtension("file.txt"); // ".txt"
string name = Path.GetFileNameWithoutExtension(fullPath);
string combined = Path.Combine("dir", "sub", "file.txt");