如何在一次调用文件系统中获取目录结构?

时间:2011-02-28 11:22:44

标签: c# .net file vsto

我有一个浏览目录的VSTO应用程序,并以特定格式列出Excel工作表中的子文件夹和文件。我目前使用DirectoryInfoFileInfo,但需要很长时间才能处理。该目录位于网络共享上。似乎GetFilesGetDirectories上的每个枚举都是对文件系统的单独调用。我实际上只对某个文件夹下的目录结构感兴趣。我只想提取子文件夹和文件的名称和路径。是否有某种方法可以在一次调用文件系统时检索此结构的完整概述?我有什么选择?

修改

我使用的是.NET 4.0

2 个答案:

答案 0 :(得分:1)

我不记得有什么能让你的整个树都在一次通话中。

我知道这不是您问题的完整解决方案,但您可以使用EnumerateDirectoriesEnumerateFiles在您仍在加载目录和文件时对其进行枚举。不幸的是,这并没有减少加载时间,但通常情况下,进度的出现会减少等待的痛苦。

答案 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。