2010-07-20 89 views

回答

3

像這樣:

Directory.GetDirectories("C:\", "*", SearchOption.AllDirectories) 

注意,這將是非常緩慢的。
在.Net 4.0中,通過將GetDirectories更改爲EnumerateDirectories可以使其更快。

1

SLaks's answer是明顯的方法。

如果沒有.NET 4.0,但是你也想在一定程度上減輕緩慢,你可以寫你自己的遞歸函數開始懶洋洋地通過目錄列舉遞歸。

static IEnumerable<DirectoryInfo> GetAllDirectories(DirectoryInfo directory) 
{ 
    DirectoryInfo[] directories = directory.GetDirectories(); 
    if (directories.Length == 0) 
     yield break; 

    foreach (DirectoryInfo subdirectory in directories) 
    { 
     yield return subdirectory; 
     foreach (DirectoryInfo subsubdirectory in GetAllDirectories(subdirectory)) 
     { 
      yield return subsubdirectory; 
     } 
    } 
} 
相關問題