2010-09-14 5 views
10

possible en double:
How to recursively list all the files in a directory in C#?liste récursivement tous les fichiers et dossiers sous le chemin donné?

Je veux énumérer les "sous-chemin" des fichiers et des dossiers pour le dossier donnant (chemin)

disons que je la dossier C: \ files \ dossier1 \ sous-dossier1 \ fichier.txt

si je donne la fonction c: \ files \ folder1 \

Je vais me subfolder1 subfolder1 \ file.txt

+4

Vous avez examiné l'API disponible avec FileInfo et DirectoryInfo? Implémenter le comportement que vous voulez est assez trivial avec ces classes ... –

Répondre

23

Essayez quelque chose comme ceci:

static void Main(string[] args) 
{ 
    DirSearch(@"c:\temp"); 
    Console.ReadKey(); 
} 

static void DirSearch(string dir) 
{ 
    try 
    { 
     foreach (string f in Directory.GetFiles(dir)) 
      Console.WriteLine(f); 
     foreach (string d in Directory.GetDirectories(dir)) 
     { 
      Console.WriteLine(d); 
      DirSearch(d); 
     } 

    } 
    catch (System.Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 
24

Vous pouvez utiliser la méthode Directory.GetFiles pour lister tous les fichiers dans un dossier:

string[] files = Directory.GetFiles(@"c:\files\folder1\", 
    "*.*", 
    SearchOption.AllDirectories); 

foreach (var file in files) 
{ 
    Console.WriteLine(file); 
} 

Remarque que le paramètre SearchOption peut être utilisé pour contrôler si la recherche est récursive (SearchOption.AllDirectories) ou non (SearchOption.TopDirectoryOnly).

+1

Cette solution n'inclut pas les dossiers dans la liste retournée. – galmok

+1

@galmok: Utilisez 'Directory.GetFileSystemEntries (...)' au lieu de 'Directory.GetFiles (...)' et '" * "' au lieu de '" *. * "'. – RiA

5
String[] subDirectories; 
String[] subFiles; 
subDirectories = System.IO.Directory.GetDirectories("your path here"); 
subFiles = System.IO.Directory.GetFiles("your path here"); 
+0

Vraiment facile et ça berce. Mais pour obtenir seulement les noms - foreach (String str dans les sous-répertoires) Console.WriteLine (str.Split ('\\'). Last()); foreach (Chaîne str dans les sous-fichiers) Console.WriteLine (str.Split ('\\'). Last()); – sapatelbaps

0

Je me souviens résoudre un problème similaire pas trop longtemps sur le SO, mais il était en VB. Voici le question.

Questions connexes