新闻中心 分类>>

C#如何读取和写入文本文件 C#文件读写操作教程

2026-01-12 00:00:00
浏览次数:
返回列表
C#中读写文本文件最推荐使用File类静态方法,如ReadAllText/WriteAllText,简单安全且默认UTF-8;大文件或需逐行处理时用StreamReader/StreamWriter并配合using;注意编码统一与异常处理。

在C#中读写文本文件最常用、最推荐的方式是使用 System.IO.File 类提供的静态方法,简单直接、不易出错。对于需要逐行处理或控制缓冲、编码等细节的场景,再考虑 StreamReaderStreamWriter

用 File.ReadAllText / File.WriteAllText 快速读写整个文件

适合内容不大(几MB以内)、不需要边读边处理的场景。自动处理文件打开、关闭和资源释放,编码默认为 UTF-8(不含 BOM),也可显式指定。

  • 读取全部文本:string content = File.ReadAllText("data.txt");
  • 读取并指定编码:string content = File.ReadAllText("data.txt", Encoding.UTF8);
  • 写入文本(覆盖):File.WriteAllText("output.txt", "Hello, World!");
  • 追加写入(不覆盖):File.AppendAllText("log.txt", "[INFO] Task completed.\n");

用 StreamReader / StreamWriter 精确控制读写过程

适合大文件、需要逐行处理、或必须自定义编码/缓冲区大小的场景。务必用 using 语句确保资源及时释放。

  • 逐行读取(推荐用于日志、配置等):
    using (var reader = new StreamReader("input.txt", Encoding.Default)) {
      string line;
      while ((line = reader.ReadLine()) != null) {
        Console.WriteLine(line);
      }
    }
  • 写入多行文本:
    using (var writer = new StreamWriter("result.txt", false)) {
      writer.WriteLine("第一行");
      writer.Write("第二行不换行");
      writer.WriteLine(" —— 已完成");
    }

注意编码和换行符的兼容性

Windows 默认用 \r\n,Linux/macOS 用 \n;不同编码(如 GB2312、UTF-8 with BOM)可能导致中文乱码。建议统一用 Encoding.UTF8,避免用 Encoding.Default(依赖系统区域设置)。

  • 保存带 BOM 的 UTF-8(部分旧程序需要):new UTF8Encoding(true)
  • 无 BOM 的 UTF-8(现代推荐):Encoding.UTF8(.NET Core/.NET 5+ 默认就是无 BOM)
  • 读取 GB2312 编码文件:File.ReadAllText("old.txt", Encoding.GetEncoding("GB2312"))

异常处理与路径安全

文件操作容易因权限、路径不存在、文件被占用等失败,建议包裹 try-catch,并用 Path.Combine 拼接路径防止斜杠错误。

  • 安全拼路径:string path = Path.Combine("Logs", "app_" + DateTime.Now.ToString("yyyyMMdd") + ".txt");
  • 检查文件是否存在再读:if (File.Exists(path)) { ... }
  • 捕获常见异常:catch (UnauthorizedAccessException) { /* 权限不足 */ }
    catch (IOException) { /* 文件正被其他程序使用 */ }

基本上就这些。日常开发中,90% 的文本读写用 File.ReadAllTextFile.WriteAllText 就够了;需要精细控制时再上 StreamReader/Writer。不复杂但容易忽略编码和异常,留个心眼就好。

搜索