0

0

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

星降

星降

发布时间:2026-01-12 10:28:35

|

733人浏览过

|

来源于php中文网

原创

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

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

在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(依赖系统区域设置)。

高级Bash脚本编程指南 chm版
高级Bash脚本编程指南 chm版

这本书假定你没有任何关于脚本或一般程序的编程知识, 但是如果你具备相关的知识, 那么你将很容易就能够达到中高级的水平. . . 所有这些只是UNIX®浩瀚知识的一小部分. 你可以把本书作为教材, 自学手册, 或者是关于shell脚本技术的文档. 书中的练习和样例脚本中的注释将会与读者进行更好的互动, 但是最关键的前提是: 想真正学习脚本编程的唯一途径就是亲自动手编写脚本. 这本书也可作为教材来讲解一般的编程概念. 向伟大的中华民族的Linux用户致意! 我希望这本书能够帮助你们学习和理解L

下载
  • 保存带 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。不复杂但容易忽略编码和异常,留个心眼就好。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

231

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

435

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

731

2023.08.22

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

84

2023.09.25

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

411

2023.08.08

console.log是什么
console.log是什么

console.log 是 javascript 函数,用于在浏览器控制台中输出信息,便于调试和故障排除。想了解更多console.log的相关内容,可以阅读本专题下面的文章。

486

2024.05.29

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.12.07

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

2

2026.01.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号