C# 目录与目录信息

C# 目录与目录信息,c#,asp.net,directory,directoryinfo,C#,Asp.net,Directory,Directoryinfo,它们是等价的还是相互替代的?其中是否有不推荐的,如果是,是哪一个?建议在ASP.NET web应用程序中使用哪一个?我的目标是递归地从特定目录提取所有文件。DirectoryInfo(基本上)是目录类,但在非静态上下文中使用。如果您要对文件系统进行多次调用,特别是当文件系统位于同一文件夹或该文件夹的子目录中时,MSDN建议使用DirectoryInfo。是一个静态类,它提供了处理目录的静态方法。类的实例,该类提供有关特定目录的信息。例如,如果您需要有关C:\Temp的信息: var dirInf

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

DirectoryInfo(基本上)是目录类,但在非静态上下文中使用。如果您要对文件系统进行多次调用,特别是当文件系统位于同一文件夹或该文件夹的子目录中时,MSDN建议使用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具有可能满足您的要求的功能

类是静态的 类,该类可用于创建, 移动、枚举目录和子目录 目录。这个 课程也为同样的目的服务 目的类似于
目录
类 其成员是实例成员,如下所示: 与
目录
类相对。主要 两者的区别在于 当我们可以使用这些类时。
目录
类可以在 希望在以下位置执行简单的文件夹操作: 一旦例如,您需要删除 打开文件夹,走开。但是,
DirectoryInfo
类已关联 提供一个文件夹,并为您提供所有 可以在上完成的操作 文件夹。
DirectoryInfo
类 在以下情况下接受路径作为参数: 实例化并为您提供 文件夹上的所有内容。你可以 创建子目录、移动、枚举 等等

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

目录

  • 目录是一个静态类
  • 当我们想要在文件夹中执行一个操作时,应该使用此选项
  • 由于不需要为目录类创建对象,所以使用它不会产生任何开销
  • 目录信息类

  • DirectoryInfo不是静态类
  • 若用户需要在一个目录上执行许多操作,如创建、删除、文件列表等,那个么应该使用DirectoryInfo类
  • 将创建一个单独的对象来执行所有与目录相关的操作
  • 如果要对文件夹执行许多操作,则该方法非常有效,因为一旦创建了对象,该对象就具有有关文件夹的所有必要信息,例如其创建时间、上次访问时间和属性。DirectoryInfo类的所有成员都是实例成员

  • 从代码访问安全的角度来看,如果您在部分信任中运行,这可能是正确的,但这不适用于ACL安全检查,据我所知,ACL安全检查仍在对每个操作执行。除上述内容外,我还要补充:“如果要多次重用对象,请考虑使用DirectyInt实例方法代替目录类的相应静态方法,因为安全检查并不总是必要的。”根据MSDN文档。