使用File
对象的静态方法和创建一个新的FileInfo
对象并调用那些方法之间有很大的区别吗?
File
必须解析指定的路径(假设它是相对路径),而FileInfo
应该已经有了解析后的路径。Path.GetFullPathInternal
,该方法会执行一些工作以规范化/解析路径。正如@errorstacks所指出的那样,一个是静态方法,一个是实例方法。因此,您无法在没有FileInfo实例的情况下调用FileInfo.Delete。假设您已经拥有了它,那么唯一的区别就是路径解析。 - CodeNaked两者均调用Win32Native.DeleteFile()
这要看情况。如果您只需要执行一次操作,可以使用File
类;如果进行同一文件的多次操作,则应使用FileInfo
。
编辑: 我的理解是,File类的静态方法会始终检查安全性。但是,如果您重复使用FileInfo实例,则方法仅在第一次调用时执行安全检查,而不是每次调用都检查。
希望这些能对你有所帮助...
IO.FileInfo
提供了用于创建、复制、删除、移动和打开文件的实例方法,并助于创建 System.IO.FileStream objects
。此类不能被继承。
这意味着,你需要创建 FileInfo 的实例/对象来完成这些过程。
IO.File 提供了用于创建、复制、删除、移动和打开文件的静态方法,并助于创建 System.IO.FileStream 对象。
这意味着,你不需要创建 FileInfo 的实例/对象来完成这些过程。
查看以下链接以获取更多信息。
http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
不,它们基本上是一样的东西。
不,它们是为了方便而复制的。
几乎没有区别。两者都会删除文件(如果存在)并在文件不存在时抛出异常。