我有一个浏览目录的VSTO应用程序,并以特定格式列出Excel工作表中的子文件夹和文件。我目前使用DirectoryInfo
和FileInfo
,但需要很长时间才能处理。该目录位于网络共享上。似乎GetFiles
或GetDirectories
上的每个枚举都是对文件系统的单独调用。我实际上只对某个文件夹下的目录结构感兴趣。我只想提取子文件夹和文件的名称和路径。是否有某种方法可以在一次调用文件系统时检索此结构的完整概述?我有什么选择?
修改
我使用的是.NET 4.0
答案 0 :(得分:1)
我不记得有什么能让你的整个树都在一次通话中。
我知道这不是您问题的完整解决方案,但您可以使用EnumerateDirectories和EnumerateFiles在您仍在加载目录和文件时对其进行枚举。不幸的是,这并没有减少总加载时间,但通常情况下,进度的出现会减少等待的痛苦。
答案 1 :(得分:0)
在所有驱动器中所有目录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
}
在子目录中找到一个特定的dir枚举recursevly。