[英]How do I get directory structure in a single call to the filesystem?
我有一个VSTO应用程序,它可以浏览目录并以某种格式列出Excel工作表中的子文件夹和文件。 我目前使用DirectoryInfo
和FileInfo
但是处理时间很长。 该目录位于网络共享上。 似乎GetFiles
或GetDirectories
上的每个枚举都是对文件系统的单独调用。 我实际上只对某个文件夹下的目录结构感兴趣。 我只想提取子文件夹和文件的名称和路径。 是否有某种方法可以通过一次调用文件系统来检索此结构的完整概述? 我有什么选择?
编辑:
我正在使用.NET 4.0
我不记得有任何事情可以一次调用整个树。
我知道这不是解决问题的完整解决方案,但是您可以使用EnumerateDirectories和EnumerateFiles枚举目录和文件,同时仍在加载目录和文件。 不幸的是,这并不能减少总的加载时间,但是进度的出现通常会减轻等待的痛苦。
在所有驱动器中的所有目录C#
public List<DirectoryInfo> getDirectoryStructure()
{
List<DirectoryInfo> drives = new List<DirectoryInfo>();
string[] drives = System.Environment.GetLogicalDrives();
foreach (string dr in drives)
{
System.IO.DriveInfo di = new System.IO.DriveInfo(dr);
// Here we skip the drive if it is not ready to be read. This
// is not necessarily the appropriate action in all scenarios.
if (!di.IsReady)
{
continue;
}
drives.Add( di.RootDirectory);
}
return drives
}
查找特定目录,然后在子目录上递归枚举。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.