2010-07-20 87 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; 
     } 
    } 
} 
相关问题