它们是等价的还是彼此替代的?它们中的任何一个是否已被弃用,如果是,是哪一个?推荐在 ASP.NET Web 应用程序中使用哪一个?我的目标是递归地从特定目录中提取所有文件。
5 回答
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);
...
}
简而言之,只要它做你想做的事,你使用哪个并不重要。两者都不推荐。
Directory
class 是一个静态类,可用于创建、移动、枚举目录和子目录。该类DirectoryInfo
也用于与Directory
类相同的目的,其中它的成员是实例成员而不是Directory
类。两者之间的主要区别在于我们何时可以使用这些类。Directory
当我们想要一次简单的文件夹操作时可以使用类。例如,您需要删除文件夹并离开。但是,DirectoryInfo
该类与文件夹相关联,并为您提供可以对文件夹执行的所有操作。该类DirectoryInfo
在实例化时接受路径作为参数,并为您提供文件夹中的所有内容。您可以创建子目录、移动、枚举等。 CODEDIGEST
还有一个重要的注意事项,如果您必须对目录 DirectoryInfo 执行多项操作,则将具有性能优势,因为它不需要对每个操作进行安全权限检查。
目录
- 目录是一个静态类。
- 当我们想要在文件夹中执行一项操作时,应该使用它。
- 由于不需要为 Directory 类创建对象,因此使用它没有任何开销。
目录信息类
- DirectoryInfo 不是静态类。
- 如果用户需要对一个目录执行大量操作,如创建、删除、文件列表等,则应使用 DirectoryInfo 类。
- 创建一个单独的对象来执行所有与目录相关的操作。
- 如果您要对文件夹执行许多操作,这将非常有效,因为一旦创建了对象,它就具有有关文件夹的所有必要信息,例如其创建时间、上次访问时间和属性。DirectoryInfo 类的所有成员都是实例成员。
DirectoryInfo (基本上)是 Directory 类,但在非静态上下文中使用。如果您要对文件系统进行多次调用,特别是当它位于同一文件夹或所述文件夹的子目录中时,MSDN 建议使用 DirectoryInfo。
DirectoryInfo 有一个可能满足您要求的DirectoryInfo.GetFiles 方法。