跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

c#如何追加写入文件_c#追加写入文件新手必看入门教程

File.AppendAllText()最简单但性能差且不支持自定义编码;StreamWriter配合FileMode.Append适合频繁追加、指定编码及避免重复开闭文件,需注意线程安全与正确配置append参数。 直接用
File.AppendAllText()
最简单,但要注意编码和异常场景;如果要频繁追加或控制流,得用
StreamWriter
配合
FileMode.Append
。 用
File.AppendAllText()
追加一行文本最省事 适合写日志、临时记录等轻量场景,内部自动处理文件打开/关闭和编码(默认 UTF-8)。 每次调用都会重新打开文件、写入、再关闭,频繁调用性能差 不支持自定义编码(如 GB2312),硬要改就得换方式 如果文件不存在,会自动创建;路径中父目录不存在则抛
DirectoryNotFoundException
示例:
File.AppendAllText("log.txt", $"[{DateTime.Now}] 用户登录成功\r\n");
用
StreamWriter
追加并复用流对象 适合循环写入、需指定编码、或想避免反复开闭文件的场景。 C知道 CSDN推出的一款AI技术问答工具 下载 必须显式指定
FileMode.Append
和
FileAccess.Write
,否则可能覆盖原文件 推荐用
using
确保
Dispose()
调用,否则文件句柄泄漏 编码需在构造时传入,比如
new StreamWriter("data.log", true, Encoding.UTF8)
中第二个
true
表示追加 示例:
using (var writer = new StreamWriter("output.txt", true))
{
writer.WriteLine("新记录");
writer.WriteLine("另一条");
}
追加写入时容易踩的坑 不是所有“写文件”操作都等价,几个关键点常被忽略:
File.WriteAllText()
会清空重写,不是追加 —— 新手误用导致数据全丢 多线程同时追加同一文件,
File.AppendAllText()
不保证线程安全,可能乱序或截断 用
StreamWriter
时若忘了传
true
(append 参数),就变成覆盖写入 Windows 下换行用
\r\n
,但
WriteLine()
自动处理;手动拼接字符串时别漏掉 路径含中文或空格一般没问题,但若权限不足(如写系统目录),会抛
UnauthorizedAccessException
真正麻烦的不是“怎么追加”,而是“什么时候该追加、要不要加锁、要不要缓冲、要不要检查磁盘空间”——这些得看具体业务场景,不能光靠一个函数名解决。

相关文章