C#中File,Path,Directory类的区别
https://blog.csdn.net/qq_43304572/article/details/84260450 / https://blog.csdn.net/2303_78156670/article/details/136754280 / http://t.zoukankan.com/yank-p-961747.html
1、File类:操作文件,剪切(Move),赋值(Copy),删除(delete),读取,写入
2、Path类:操作路径,获取路径下的GetFileName,GetExtension,GetFullPath
3、Directory类:操作文件夹,目录(文件夹)的创建(Creat),移动(Move),获取目录下的所有文件(GetFiles),所有文件夹(GetDirectories)
File与FileInfo类的主要区别,
File类是静态的,FileInfo不是静态的也没有静态的方法,仅可用于实例化的对象。
FileInfo方法基本类似于File。关于二者,作何选择。
● 如果仅进行单一方法调用,则可以使用静态File类上的方法。在此,单一调用要快一些,因为.NET Framework不必实例化新对象,再调用方法。
● 如果应用程序在文件上执行几种操作,则实例化FileInfo对象并使用其方法就更好一些。这会节省时间,因为对象已在文件系统上引用正确的文件,而静态类必须每次都寻找文件。
File类的常用静态方法
1.1、File Create(string path)
根据传入的路径创建一个文件。如果文件不存在,则创建文件;如果存在且不是只读的,则覆盖其内容
1.2、void Delete(string path)
如果文件存在,则删除指定文件;如果指定的文件不存在也不引发异常
1.3、bool Exists(string path)
判断指定文件是否存在,若存在则返回true,否则返回false
1.4、void Move(string sourceFileName, string destFileName)
将指定的文件移动到新位置,可以在新位置为文件指定不同的名称
1.5、FileStream Open(string path, FileMode)
打开指定路径上的文件并返回FileStream对象
1.6、void Copy(string sourceFileName, string destFileName)
将现有的文件赋值到新文件,可以指定是否允许覆盖同名的文件
1 2 3 4 5 6 7 8 9 10 11 12 | File.Create( "Data.txt" ); //创建文件 Console.WriteLine( "文件创建成功" ); if (File.Exists( "Data.txt" )) //判断文件是否存在 { Console.WriteLine( "Data.txt文件存在" ); } else { Console.WriteLine( "Data.txt文件不存在" ); } //文件创建成功 //Data.txt文件存在 |
FileInfo的特有属性
FileInfo类除了有许多与File类相似的方法外,同样也有它特有的特性
2.1、Directory
该属性用于检索一个DireectoryInfo对象,表示当前文件所在的目录
2.2、DirectoryName
该属性用于返回文件目录,而且这个属性是只读的
2.3、IsReadOnly
该属性用于判断文件是否是只读的
2.4、Length
该属性用于获取文件的大小(以字节为单位),并返回long类型的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | FileInfo aFile= new FileInfo( @"C:\Data.text" ); //创建一个FileInfo类对象 aFile.Create(); //创建文件 Console.WriteLIne( "文件创建成功" ); if (aFile.Exists) { Console.WriteLine( "Data.txt文件存在" ); } else { Console.Writeline( "Data.txt文件不存在" ); } Console.WriteLine( "文件当前目录为:" +aFile.Directory); Console.WriteLine( "文件大小为:" +aFile.Length); //文件创建成功 //Data.txt文件存在 //文件当前目录为:E:\Data.txt //文件大小为:0 |
而DirectoryInfo类与Directory区别,也FileInfo类似。
●如果进行单一调用,就使用静态Directory类。
●如果进行一系列调用,则使用实例化的DirectoryInfo。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了