17File类
File类
是操作文件的类,该类在System.IO下,是静态类,直接类目加方法即可使用。
File类只能用来读取小文件,因为他是一下子全部读进来,在读的时候很浪费内存,如果读大文件需要用文件流,所以一般用来操作文本文件。
在项目中最好使用相对路径,提高可值性
常用方法
1创建文件(除了txt文件,还可以创建wmv等等文件)
File.Create(@"C:\Users\Admin\Desktop\new.txt");
2删除文件
File.Delete(@"C:\Users\Admin\Desktop\new.txt");//这个删除是彻底删除,不会进入回收站
3复制文件
File.Copy(“source”, “targetFileName”, true);//文件拷贝,true表示当文件存在时“覆盖”,如果不加true,则文件存在报异常。
File.Copy(@"C:\Users\Admin\Desktop\测试文本.txt", @"C:\Users\Admin\Desktop\new.txt");
4剪切文件
File.Move(@"C:\Users\SpringRain\Desktop\code.txt", @"C:\Users\SpringRain\Desktop\newnew.txt");
5判存
File.Exists();//判断文件是否存在
以字节方式读取文件
所有文件都是以字节形式读取的,包括图文声像
File.ReadAllBytes():以字节形式读取文件,并且返回一个字节的数组
比如:读取一个文本文件
byte[] buffer = File.ReadAllBytes(@"C:\Users\Admin\Desktop\测试文本.txt");
//将字节数组转换成字符串,并且将字节数组中的每一个元素都按照我们指定的编码格式解码成字符串
//UTF8
string s = Encoding.UTF8.GetString(buffer);
//ANSI格式
//string s = Encoding.Default.GetString(buffer);
//GB2312格式
//string s = Encoding.GetEncoding("Gb2312").GetString(buffer);
Console.WriteLine(s);
Console.WriteLine(buffer.ToString());//输出命名空间
写入文本文件
string s = "今天天气好晴朗,处处好风光";
//将字符串转换成字节数组
byte[] buffer = Encoding.Default.GetBytes(s);//指定编码格式:Encoding.GetEncoding("UTF-8").GetBytes(s);
//以字节的形式向计算机中写入文本文件
File.WriteAllBytes(@"C:\Users\Admin\Desktop\new.txt", buffer);
Console.WriteLine("写入成功");
使用File类来实现一个多媒体文件的复制操作
//读取
byte[] buffer = File.ReadAllBytes(@"C:\Users\Admin\Desktop\Video_2021-10-09_164125.wmv");
Console.ReadKey();
//写入
File.WriteAllBytes(@"D:\NET\C#复习\练习\new.wmv", buffer);
Console.WriteLine("复制成功");
//Console.ReadKey();
byte[] buffer = new byte[1024 * 1024 * 5];
while (true)
{
File.WriteAllBytes(@"D:\NET\C#复习\练习\123.wmv", buffer);
}
下面几个方法常用来操作文本文件
读取文本文件
1、ReadAllLines():只能读文本
以行的形式读取,可以方便操作每行的内容
string[] contents= File.ReadAllLines(@"C:\Users\Admin\Desktop\测试文本.txt",Encoding.Default);//第二个参数,指定编码格式
2、ReadAllText():只能读文本
读取整个文本,不能操作每行内容
string str = File.ReadAllText(@"C:\Users\Admin\Desktop\测试文本.txt",Encoding.Default);
向文本文件中写入
1、WriteAllLines():以行的形式写,会覆盖原来的内容
File.WriteAllLines(@"C:\Users\Admin\Desktop\测试文本.txt", new string[] { "abc", "def" });
2、WriteAllText():以文本的形式写,会覆盖原来的内容
File.WriteAllText(@"C:\Users\Admin\Desktop\测试文本.txt","张三李四王五");
向文本文件中追加
AppendAllText():不会覆盖文本文件中原有的内容
File.AppendAllText(@"C:\Users\Admin\Desktop\测试文本.txt","看我有没有把你覆盖掉");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构