46

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

4

5 回答 5

54

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);
    ...
}

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

于 2010-06-30T05:05:58.103 回答
9

Directoryclass 是一个静态类,可用于创建、移动、枚举目录和子目录。该类DirectoryInfo 也用于与Directory类相同的目的,其中它的成员是实例成员而不是Directory类。两者之间的主要区别在于我们何时可以使用这些类。 Directory当我们想要一次简单的文件夹操作时可以使用类。例如,您需要删除文件夹并离开。但是, DirectoryInfo该类与文件夹相关联,并为您提供可以对文件夹执行的所有操作。该类DirectoryInfo在实例化时接受路径作为参数,并为您提供文件夹中的所有内容。您可以创建子目录、移动、枚举等。 CODEDIGEST

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

于 2010-06-30T05:09:55.550 回答
3

目录

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

目录信息类

  1. DirectoryInfo 不是静态类。
  2. 如果用户需要对一个目录执行大量操作,如创建、删除、文件列表等,则应使用 DirectoryInfo 类。
  3. 创建一个单独的对象来执行所有与目录相关的操作。
  4. 如果您要对文件夹执行许多操作,这将非常有效,因为一旦创建了对象,它就具有有关文件夹的所有必要信息,例如其创建时间、上次访问时间和属性。DirectoryInfo 类的所有成员都是实例成员。
于 2010-07-02T05:12:44.167 回答
2

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

于 2010-06-30T05:05:14.097 回答
1

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

于 2010-06-30T05:06:01.020 回答