【问题标题】:Directory vs DirectoryInfo目录与目录信息
【发布时间】:2011-03-09 23:06:36
【问题描述】:

它们是等价的还是相互替代的?它们中的任何一个是否已被弃用,如果是,是哪一个?推荐在 ASP.NET Web 应用程序中使用哪一个?我的目标是递归地从特定目录中提取所有文件。

【问题讨论】:

    标签: c# asp.net directory directoryinfo


    【解决方案1】:

    DirectoryInfo 有一个DirectoryInfo.GetFiles method 可能满足您的要求。

    【讨论】:

      【解决方案2】:

      Directory 是一个静态类,它提供了处理目录的静态方法。 DirectoryInfo 是一个类的实例,它提供有关特定目录的信息。例如,如果您想要有关 C:\Temp:

      的信息
      var dirInfo = new DirectoryInfo("C:\\Temp");
      if (dirInfo.Exists) {
          FileInfo[] files = dirInfo.GetFiles("*.*", SearchOption.AllDirectories);
          ...
      }
      

      如果您只想将名称作为字符串,使用 Directory 的静态方法避免创建 DirectoryInfo 的实例可能会更快更容易。

      if (Directory.Exists("C:\\Temp")) {
          string[] files = Directory.GetFiles("C:\\Temp", "*.*", SearchOption.AllDirectories);
          ...
      }
      

      简而言之,只要它做你想做的,你使用哪一个并不重要。两者都不推荐。

      【讨论】:

      • 除了上述内容之外,我还要补充一点:“如果要多次重用一个对象,请考虑使用 DirectoryInfo 的实例方法而不是 Directory 类的相应静态方法,因为安全检查并不总是必要的。”根据 MSDN 文档。
      【解决方案3】:

      目录

      1. 目录是一个静态类。
      2. 当我们想在文件夹中执行一项操作时,应该使用它。
      3. 由于不需要为 Directory 类创建对象,因此使用它没有任何开销。

      目录信息类

      1. DirectoryInfo 不是静态类。
      2. 如果用户需要对一个目录执行大量操作,如创建、删除、文件列表等,则应使用 DirectoryInfo 类。
      3. 会创建一个单独的对象来执行所有与目录相关的操作。
      4. 如果您要对文件夹执行许多操作,它会很有效,因为一旦创建了对象,它就会包含有关文件夹的所有必要信息,例如创建时间、上次访问时间和属性。 DirectoryInfo 类的所有成员都是实例成员。

      【讨论】:

        【解决方案4】:

        Directory 类是静态的 可用于创建的类, 移动,枚举目录和子 目录。 DirectoryInfo 课程也同样适用 目的就像Directory 类在哪里 它的成员是实例成员 反对Directory 类。主要的 两者的区别在于 我们什么时候可以使用这些类。 Directory class 可以在我们使用时使用 想要一个简单的文件夹操作在 一次。例如,您需要删除 文件夹并离开。但是, DirectoryInfo 类已关联 带有一个文件夹,并为您提供所有 可以在 文件夹。 DirectoryInfo 类 接受路径作为参数时 实例化并为您提供 文件夹中的所有内容。你可以 创建子目录、移动、枚举 等等CODEDIGEST

        还有一个重要的注意事项,如果您必须对目录 DirectoryInfo 执行多项操作,将具有性能优势,因为它不需要对每个操作进行安全权限检查。

        【讨论】:

        • 如果您在部分信任下运行,从代码访问安全的角度来看,这可能是正确的,但这不适用于 ACL 安全检查,据我所知,ACL 安全检查仍然在每个操作中执行。
        【解决方案5】:

        DirectoryInfo(基本上)是 Directory 类,但用于非静态上下文。如果您要对 FileSystem 进行多次调用,尤其是在同一文件夹或所述文件夹的子目录中时,MSDN 建议使用 DirectoryInfo。

        【讨论】:

          猜你喜欢
          • 2020-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多