目录与DirectoryInfo

Afs*_*bbi 41 c# asp.net directory directoryinfo

它们是相同的还是彼此的替代品?是否有任何一个被弃用,如果是这样的话?建议在ASP.NET Web应用程序中使用哪一个.我的目标是递归地从特定目录中提取所有文件.

Jos*_*osh 49

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

var dirInfo = new DirectoryInfo("C:\\Temp");
if (dirInfo.Exists) {
    FileInfo[] files = dirInfo.GetFiles("*.*", SearchOption.AllDirectories);
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果您只是希望将名称作为字符串,则可以更快,更轻松地避免使用Directory的静态方法创建DirectoryInfo实例.

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

简而言之,只要它能满足你的需求,你使用它并不重要.两者都不推荐.

  • 除了上面我还要补充说:"如果你要多次重用一个对象,考虑使用DirectoryInfo的实例方法而不是Directory类的相应静态方法,因为安全检查并不总是必要的".根据MSDN文档. (3认同)

Inc*_*ito 7

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

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