【问题标题】:File.Delete() versus FileInfo.Delete()File.Delete() 与 FileInfo.Delete()
【发布时间】:2011-10-14 20:19:04
【问题描述】:

使用File 对象的静态方法与创建一个新的FileInfo 对象并调用这些方法有很大区别吗?

【问题讨论】:

  • 一个是静态的,一个是实例化的,一清二楚! :)

标签: c# file-io fileinfo


【解决方案1】:

唯一的区别是File必须解析指定的路径(假设是相对的),而FileInfo应该已经有解析的路径。

【讨论】:

  • 你的意思是给定路径是相对的,工作必须在File.Delete()调用Win32 Delete方法之前立即完成。而使用FileInfo,路径在创建时已经解析为绝对路径。这是对你所说的正确解释吗?换句话说,这是 CLR 在幕后所做的工作,可能会影响性能,因为 File.Delete() 经常使用相同的相对路径被调用。
  • @TimCoker - 没错。如果您已经有一个 FileInfo,那么您可以保存对 Path.GetFullPathInternal 的调用,这会做一些工作来规范化/解析路径。正如@errorstacks 指出的那样,一个是静态方法,一个是实例。所以你不能在没有 FileInfo 实例的情况下调用 FileInfo.Delete。假设你有,那么唯一的区别就是路径分辨率。
【解决方案2】:

两人都在打电话给Win32Native.DeleteFile()

【讨论】:

    【解决方案3】:

    这取决于。如果您正在执行单个操作,请使用 File 类,如果您正在对同一文件执行多个操作,请使用 FileInfo

    编辑: 我提出这一点是因为我的理解是 File 类的静态方法将始终检查安全性。但是,如果您重新使用 FileInfo 的实例,这些方法将仅在第一次而不是在每个后​​续调用时进行安全检查。

    【讨论】:

    • 当否决投票时,知道原因肯定会令人耳目一新..这是一个问答网站,也是一个学习资源..如果答案完全出在午餐时间,请提供一些信息...
    • 我很好奇你为什么也被否决了。你在那里提出了一个有趣的观点。
    • 我没有投反对票,但我可能会投反对票。你为你的推荐提供了一个非常模糊的理由。如果您认为它是正确的,请用参考文献支持它。
    • 也许是因为这与您最初的问题有点偏离?调用 delete 时没有区别....我只是想指出,在执行多个操作时最好使用 FileInfo...
    • @Jesse - 抱歉,我投了反对票,但被拉走了。您关于安全性的陈述不正确,您可以使用 Reflector 进行验证。两种 Delete 方法都要求对文件具有完全相同的权限。
    【解决方案4】:

    希望对你有帮助...

    IO.FileInfo 提供创建、复制、删除、移动和打开文件的实例方法,并帮助创建System.IO.FileStream objects。这个类不能被继承。

    也就是说,您需要创建 FileInfo 的实例/对象来完成这个过程。

    IO.File 为文件的创建、复制、删除、移动和打开提供静态方法,并帮助创建 System.IO.FileStream 对象。

    这意味着,您无需创建 FileInfo 的实例/对象来完成此过程。

    查看论文链接了解更多信息

    http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx

    http://msdn.microsoft.com/en-us/library/system.io.file.aspx

    【讨论】:

      【解决方案5】:

      不,它们基本上是一样的。

      【讨论】:

        【解决方案6】:

        不,为了方便,它们被复制了

        【讨论】:

          【解决方案7】:

          几乎没有区别。如果文件存在则删除文件,如果文件不存在则抛出异常。

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-06
          • 1970-01-01
          • 2012-12-21
          • 2011-07-21
          • 2023-03-13
          • 2020-11-27
          • 2021-06-10
          相关资源
          最近更新 更多