2011-02-28 52 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枚舉的子目錄。

相關問題