C#文件操作小结

File类与FileInfo类对比:
在这里插入图片描述
在这里插入图片描述
通过查看两个类的定义的底层代码我们可以发现,File类是静态的,它内部的方法也都是静态的;而FinleInfo类是非静态的,也就是说,在使用的时候必须要实例化后通过它的对象名来进行操作,还有一个小细节,FileInfo类还有一个修饰sealed代表它同时是一个密封类,意味着我们不能继承这个类也就不存在说重写它内部的方法了。
至于说两者的方法都是大同小异的,很多都是重复的,如下面的例子:
(1)推断文件是否存在Exists方法
返回bool型,假设path为空或者没有权限,则返回false
File:推断C盘根文件夹下有没有test.txt文件:
File.Exists(“C:\test.txt”)

FileInfo:
FileInfo fileinfo = new FileInfo(“C:\test.txt”)
if(fileinfo.Exists){}

(2)创建文件用Create方法
File类的Create方法有4中重载方法:
public static FileStream Create(string path)
public static FileStream Create(string path,int bufferSize)
public static FileStream Create(string path,int bufferSize,FileOptions options)
public static FileStream Create(string path,int bufferSize,FileOptions options,FileSecurity fileSecurity)

File类Create方法參数说明
path 文件名称
bufferSize 用于读取和写入文件的已放入缓冲区的字节数
options FileOptions值之中的一个,它描写叙述怎样创建或改写该文件
fileSecurity FileSecurity值之中的一个,它确定文件的訪问控制和审核安全性

File类:
File.Create(“C:\test.txt”)
FileInfo类:
FileInfo fileinfo = new FileInfo(“C:\test.txt”)
fileinfo.Create();
(3)拷贝文件用File类的Copy方法以及FileInfo类的CopyTo方法

File类的Copy方法或者FileInfo类的CopyTo方法
File类的Copy方法有两种重载方式
public static void Copy(string sourceFileName,string destFileName)
public static void Copy(string sourceFileName,string destFileName,bool overwrite)
sourceFileName表示要复制的文件,destFileName表示目标文件的名称,不能是文件夹,假设是第一种重载,则目标文件參数不能是现有文件。
overwrite表示能否够改写目标文件
将C盘根文件夹下的test.txt文本文件拷贝到D盘根文件夹下:
(这边注意措辞,说明D盘根文件夹下是没有test.txt文件的)
File.Copy(“C:\test.txt”,“D:\test.txt”)
FileInfo类的CopyTo方法也有两种重载方式
public FileInfo CopyTo(string destFileName)
public FileInfo CopyTo(string destFileName,bool overwrite)
FileInfo fileinfo = new FileInfo(“C:\test.txt”);
fileinfo.CopyTo(“D:\test.txt”,true);
(4)移动文件用File类的Move方法和FileInfo类的MoveTo方法
File类-Move方法-
public static void Move(string sourceFileName,string destFileName)
File.Move(“C:\test.txt”,“D:\test.txt”)
FileInfo类-MoveTo方法-publicvoid MoveTo(string destFileName)
FileInfo fileinfo = new FileInfo(“C:\test.txt”);
fileinfo.MoveTo(“D:\test.txt”);

(5)删除文件用Delete方法
File类-Delete方法-public staticvoid Delete(string path)
File.Delete(“C:\test.txt”)
FileInfo类-Delete方法-publicvoid Delete(string path)
FileInfo fileinfo = new FileInfo(“C:\test.txt”);
fileinfo.Delete(“D:\test.txt”);

但是通过观察我们也发现了很明显不同的地方,File中的方法都是需要传入参数的,而FileInfo中的方法则不需要再传入参数了,其实程序这样设计也很合理,因为FileInfo在创建对象的时候已经明确知道是哪一个文件对象了,后边再执行方法都是对这个文件的操作;而File类则不同,它没有对象的概念,每次操作都必须明确传入文件的参数。这样我们就能推断出,后期当我们需要操作文件的时候到底用哪一个呢?其实用哪一个都没有明确的规定只要功能实现即可,但是通过上述方法的总结我们发现,如果仅仅是对一个文件操作一次即可,那么建议使用File效率会高一些,如果是对一个文件需要多次操作,那么使用FileInfo即可,至于说里边涉及到的什么安全不安全的问题,个人觉得对于初学者来说意义不大!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值