2010-07-20 4 views

Répondre

3

Comme ceci:

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

Notez qu'il sera très lent.
Dans .Net 4.0, vous pouvez le rendre beaucoup plus rapide en changeant GetDirectories en EnumerateDirectories.

1

SLaks's answer est l'approche évidente.

Si vous n'avez pas .NET 4.0 mais que vous voulez également atténuer la lenteur, vous pouvez écrire votre propre fonction récursive pour commencer à énumérer paresseusement les répertoires de manière récursive.

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; 
     } 
    } 
} 
Questions connexes