2011-02-28 49 views
0

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

编辑:

我使用.NET 4.0

+0

您使用的是什么版本的.NET? – 2011-02-28 11:27:16

+0

我正在使用.NET 4.0 – Jan 2011-02-28 11:39:29

+0

如果我没有记错,没有办法得到一个快速的目录列表。我会在这里开始搜索http://pinvoke.net/ – CodingBarfield 2011-02-28 12:53:31

回答

1

我不记得有什么事,将让你的整个树在一个呼叫。

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

+0

我最终建立了一个进度条。我没有时间进行大量的研究。这只是一个内部项目。 – Jan 2011-03-02 13:25:37

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 
    } 

查找特定的目录recursevly枚举的子目录。

相关问题