C#的几种文件操作方法
创建或覆盖文件
需求:如果文件不存在,创建之,如果存在,覆盖之。
1,可能有问题的方法
using (FileStream fs = File.OpenWrite(@"d:\work\1.txt")) { byte[] toBytes = Encoding.UTF8.GetBytes("11111111"); fs.Write(toBytes, 0, toBytes.Length); }
这个方法不会清空已存在文件的内容,如果源文件的内容比后写入的内容长,那么这些长的内容会被保留,这通常不是我们想要的结果。
2,正确的方法
using (FileStream fs = File.Create(@"d:\work\1.txt")) { byte[] toBytes = Encoding.UTF8.GetBytes("11111111"); fs.Write(toBytes, 0, toBytes.Length); }
唯一的不同就是把File.OpenWrite改成了File.Create,如果文件已经存在,那么其内容会被清空。
3,方法2的简化版
File.WriteAllBytes(@"d:\work\1.txt", Encoding.UTF8.GetBytes("11111111"));
4,方法2的文本版
using (StreamWriter sw = File.CreateText(@"d:\work\1.txt")) { sw.Write("11111111"); }
5,方法4的简化版
File.WriteAllText(@"d:\work\1.txt", "11111111");
读文件
1,正常读
byte[] buff = new byte[1024]; //假设文件不超过1KB using(FileStream fs = File.OpenRead(@"d:\work\1.txt")) { int len = fs.Read(buff, 0, 1024); string content = Encoding.UTF8.GetString(buff, 0, len); Console.WriteLine(content); }
2,读文本文件
using (StreamReader sr = File.OpenText(@"d:\work\1.txt")) { string content = sr.ReadToEnd(); Console.WriteLine(content); }
3,方法2的简化版
string content = File.ReadAllText(@"d:\work\1.txt");
追加
1,正常追加
using (FileStream fs = File.Open(@"d:\work\1.txt", FileMode.Append, FileAccess.Write)) { byte[] toWrite = Encoding.UTF8.GetBytes("123123\r\n"); fs.Write(toWrite, 0, toWrite.Length); }
2,追加文本
using (StreamWriter sw = File.AppendText(@"d:\work\1.txt")) { sw.Write("123123\r\n"); sw.WriteLine("123123"); //与上面语句等价 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-05-03 .net的简易多线程处理