File和FileInfo在C#中有什么区别?

我一直在阅读, 文件类的静态方法是更好地用来执行一个文件,如检查,看看它是否存在,如果我们要执行多个文件信息类的实例对特定文件的操作。

我明白这一点,可以简单地用这种方式盲目,但我想知道为什么有差异? 他们的工作方式是什么,使他们适合不同的情况? 让这两个不同的课程在不同的方面看起来有什么相同之处?

如果有人能够回答这个问题中的至less一个,那将是有帮助的。

通常,如果您正在对文件执行单个操作,请使用File类。 如果您在同一个文件上执行多个操作,请使用FileInfo

这样做的原因是因为访问文件时进行的安全检查。 当您创buildFileInfo的实例时,该检查仅执行一次。 但是,每次使用静态File方法时都会执行检查。

“File和FileInfo类的方法是相似的,但是它们的不同之处在于File类的方法是静态的 ,所以您需要传递比FileInfo实例的方法更多的参数,因为您需要这样做,因为它对特定文件进行操作;例如,FileInfo.CopyTo()方法为用于复制文件的目标path提供一个参数,而File.Copy()方法则为源path和目标path提供两个参数“。

http://www.aspfree.com/c/a/C-Sharp/A-Look-at-C-Sharp-File-and-FileInfo-Classes/1/

http://www.intelliott.com/blog/PermaLink,guid,ce9edbdb-6484-47cd-a5d6-63335adae02b.aspx

File.Exists的执行速度比新的FileInfo(filePath)要快得多.Exists – 特别是在networking上,并提供文件实际存在。 这是因为File.Exists只会检查文件的存在,而新的FileInfo(filePath).Exists首先构造一个FileInfo对象,该对象包含文件的所有属性(date,大小等)(如果存在)。

根据我的经验,即使使用File.Exists检查networking上是否存在10个文件,也会明显更快(即20ms vs 200ms)。

文件针对文件上的一次性操作进行了优化,FileInfo针对同一个文件上的多个操作进行了优化,但通常情况下,不同的方法实现之间没有太大的区别。

如果你想比较确切的实现,使用reflection器看看这两个类。

FileInfo可能需要处理访问控制属性。 其余的是静态与实例的select,你可以select方便。

是的,其中一个原因可能是,正如Nag说的,Files是一个实用程序类,因此不需要创build任何实例。 同时,由于文件是实用程序类,每次都需要安全检查。

另一方面,FileInfo需要创build实例,并指出它使用安全检查。 因此,现在使用FileInfo执行多个操作不会调用安全检查。

FileInfo是文件的一个实例,因此代表文件本身。 文件是一个工具类,所以可以使用任何文件

最近我遇到了File.Exist问题,我讨厌这个函数。 比我使用FileinfoExist函数后,我的程序工作正确。

实际上,在开发环境中发生的事情, File.Exist工作的很好,但是当它进入到实际环境时,这个函数阻塞了文件对象,因为这个原因,我得到的错误访问被拒绝,无法使用该文件。

这是我的学习。 我永远不会使用File.Exist方法最好是创build对象,然后使用它。 请注意使用静态方法。