C#将文本文件逐行读取并添加到ListBox的实现方法

晚来风
晚来风
发布时间:2026-10-13| 6人浏览过
原创

介绍在C# WinForms开发中,利用StreamReader读取文本文件内容并填充到ListBox控件的标准代码实现与注意事项。

直接实现方法与核心逻辑

在Windows Forms应用程序中,若需要将本地文本文件的每一行内容展示在用户界面的 ListBox 列表中,最基础且有效的方式是利用 System.IO.StreamReader 进行逐行读取。以下是具体的功能实现代码:

private void AddTxtToLst(string path, ListBox lst)
{
    // 使用默认编码打开文件流
    StreamReader file = new StreamReader(path, Encoding.Default);
    string s = "";
    
    // 循环读取直到文件末尾
    while (s != null)
    {
        s = file.ReadLine();
        // 过滤掉空行,避免ListBox中出现空白项
        if (!string.IsNullOrEmpty(s))
            lst.Items.Add(s);
    }
    
    // 显式关闭资源释放句柄
    file.Close();
}

详细参数解析

  • path: 文本文件的完整路径字符串。
  • lst: 目标 ListBox 对象引用。
  • Encoding.Default: 采用系统默认编码(通常为GBK/GB2312),适用于大多数中文环境下的TXT文件。若读取包含特殊字符或英文为主的文件,可考虑替换为 Encoding.UTF8 以避免乱码问题。

关键操作说明

  1. 初始化读取器:通过 new StreamReader(...) 创建实例并绑定文件路径。此步骤会检查文件是否存在,若路径无效将抛出异常,因此在实际生产环境中建议在调用前添加 File.Exists() 预判。
  2. 逐行获取内容:file.ReadLine() 每次从流中抽取一行字符串。当读取到文件结束符时,该方法返回 null,这是循环终止的判断依据。
  3. 条件过滤添加:在调用 lst.Items.Add(s) 之前,必须使用 !string.IsNullOrEmpty(s) 进行校验。否则,文本文件中可能存在的空行会在界面列表中被渲染为无内容的白项,影响视觉体验。
  4. 安全回收资源:完成所有数据的追加后,必须调用 file.Close() 以释放底层操作系统占用的文件句柄。虽然现代 .NET 版本中的 Garbage Collection(垃圾回收)最终会清理未引用的对象,但显式关闭能防止文件被其他进程意外锁定。

排错与优化建议

该段代码虽短小精悍,但在实际运行中容易遇到两类常见问题:

  • 权限不足:如果执行环境(如Web服务、受限的用户账户)没有目标路径的读取权限,会触发 UnauthorizedAccessException。确保运行程序的账号具有对 path 指定的文件至少拥有“读取”权限。
  • 大文件阻塞UI:如果待读取的文本文件体积非常大(例如几十MB以上),上述基于同步循环的代码会导致UI线程卡死(无响应)。对于超大规模数据,应引入异步编程模型(async/await)或在后台线程中进行文件读取。

以上就是关于C#使用StreamReader读取文本文件并在ListBox中显示的具体操作流程和原理细节,更多关于.NET基础IO处理与WinForms控件应用的技术资料请关注本站其它相关文章!

相关标签:

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

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 算法库。