C#实现文本文件读写操作详解

周末不加班
周末不加班
发布时间:2026-10-14| 3人浏览过
原创

在开发应用中,频繁需要与外部数据进行交互,其中文本文件的读写是最常见的需求之一。在C#编程语言中,System.IO命名空间提供了丰富的类来处理文件操作。本文将演示如何使用不同的API来实现文本文件的创建、写入、读取以及按行处理,涵盖从简单的一键操作到灵活的流式处理场景。

写入文本文件

C#提供了多种写入文件的方式,选择哪种方式取决于数据格式(如字符串数组或单个字符串)以及是否需要逐行处理逻辑。

第1步:使用File类直接写入所有行

File.WriteAllLines 方法适用于将字符串数组一次性写入文件。如果指定路径的文件不存在,它会自动创建;如果文件已存在,则会覆盖原有内容。

  1. 准备数据:定义包含多行的字符串数组,例如 string[] lines = { "first line", "second line", "third line", "第四行" };
  2. 执行写入:调用 System.IO.File.WriteAllLines,传入文件完整路径(建议使用 @"C:\testDir\test.txt" 避免转义字符问题)和目标编码(推荐 Encoding.UTF8)。
// 如果文件不存在,则创建;存在则覆盖
//该方法写入字符数组换行显示
string[] lines = { "first line", "second line", "third line", "第四行" };
System.IO.File.WriteAllLines(@"C:\testDir\test.txt", lines, Encoding.UTF8);

第2步:使用File类写入单段字符串

对于简单的整段文本,可以直接使用 File.WriteAllText。该方法同样会在文件不存在时创建,存在时覆盖。

// 如果文件不存在,则创建;存在则覆盖
string strTest = "该例子测试一个字符串写入文本文件。";
System.IO.File.WriteAllText(@"C:\testDir\test1.txt", strTest, Encoding.UTF8);

第3步:使用StreamWriter灵活写入

当需要根据条件筛选内容,或者需要将新内容追加到文件末尾而不是覆盖时,应使用 StreamWriter。

  • 参数说明:
    - 参数1:文件路径
    - 参数2:布尔值。设为 true 表示追加模式(Append),设为 false 表示覆盖模式(默认行为)。
  • Write vs WriteLine: file.Write() 直接写入文本不换行,file.WriteLine() 写入后自动添加换行符。
// 在将文本写入文件前,处理文本行
// StreamWriter第二个参数为true则把文本追加到文件末尾
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\testDir\test2.txt", true))
{
    foreach (string line in lines)
    {
        // 示例:跳过包含特定内容的行
        if (!line.Contains("second"))
        {
            file.Write(line);
            file.WriteLine(line); 
        }
    }
}

读取文本文件

读取文件的目标是将磁盘上的内容加载到内存中以供程序使用。根据后续处理需求,可以选择一次性加载全部文本或按行流式处理。

第4步:整体读取为字符串

使用 File.ReadAllText 可以将整个文件内容作为一个长字符串返回,适合小文件或不需要分行处理的场景。

// 直接读取出字符串
string text = System.IO.File.ReadAllText(@"C:\testDir\test1.txt");
Console.WriteLine(text);

第5步:按行读取为字符串数组

File.ReadAllLines 会将文件内容分割成 string[],每一行对应数组中的一个元素。这种方法在处理结构化文本数据(如CSV格式的文本版)时非常方便。

// 按行读取为字符串数组
string[] lines = System.IO.File.ReadAllLines(@"C:\testDir\test.txt");
foreach (string line in lines)
{
    Console.WriteLine(line);
}

第6步:使用StreamReader流式读取

对于大文件,为了避免占用过多内存,推荐使用 StreamReader 进行逐行读取。这种方式会一行一行地读出文本,直到文件结束。

  • 判断结束:通过 sr.ReadLine() 返回值是否为 null 来判断是否读到了文件末尾。
  • 资源释放:务必使用 using 语句包裹,确保文件句柄在使用完毕后被正确关闭。
// 从头到尾以流的方式读出文本文件
//该方法会一行一行读出文本
using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\testDir\test.txt"))
{
    string str;
    while ((str = sr.ReadLine()) != null)
    {
        Console.WriteLine(str);
    }
}

以上就是在C#中进行文本文件写入与读取操作的详细内容,涵盖了从简单的一键操作到复杂的流式处理逻辑。更多关于C#文件I/O的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。