2010-11-23 9 views
73

Je veux obtenir les fichiers dans le dossier et aussi dans son subfolders.The code suivant ne reçoit pas les fichiers dans son sous-dossier:Comment faire une boucle sur tous les fichiers d'un répertoire dans C# .net?

string[] files = Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs"); 

Quelqu'un peut-il me dire comment S'il vous plaît mettre en œuvre ce en C# .net?

+2

J'ai toujours préféré la méthode MSDN de faire les choses. Au bas de [ce lien] (http://msdn.microsoft.com/fr-fr/library/07wt70x2.aspx), ils fournissent un exemple récursif avec un programme de console (C#). – Justin

+1

@Panuvin - Remarque: Le code MSDN est un peu dangereux. Pour un très grand contenu de dossier et de sous-dossier (beaucoup de nombreux fichiers), vous pouvez obtenir une exception StackOverflow (à cause du code récursif) – Joezer

Répondre

139
string[] files = 
    Directory.GetFiles(txtPath.Text, "*ProfileHandler.cs", SearchOption.AllDirectories); 

Ce dernier effets des paramètres exactement ce que vous faites référence. Réglez-le sur AllDirectories pour chaque fichier, y compris dans les sous-dossiers, et réglez-le sur TopDirectoryOnly si vous souhaitez uniquement effectuer une recherche dans le répertoire indiqué et non dans des sous-dossiers.

Se reporter à MDSN pour plus de détails: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

+5

Cette boucle sera infinie s'il y a une boucle dans votre structure de dossiers. Voir http://msdn.microsoft.com/en-us/library/ms143448.aspx –

+0

Quel est le but du paramètre du milieu? – usefulBee

+1

Il s'appelle searchPattern et c'est un filtre par lequel les fichiers sont sélectionnés. Dans ce cas, il sélectionnera tous les fichiers se terminant par "ProfileHandler.cs". Jetez un oeil à [MDSN] (https://msdn.microsoft.com/en-us/library/ms143316 (v = vs.110) .aspx) – Miguel

2

essayer ci-dessous le code

Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs",SearchOption.AllDirectories) 
-4

Peut-être vous pouvez essayer cette fonction avec des modifications mineures;

public function RecursiveFiles(FolderPath) 

Dim folder As DirectoryInfo = New DirectoryInfo(FolderPath) 
Dim Subfolders() As DirectoryInfo = folder .GetDirectories() 
Dim strFiles() As FileInfo = myfolder.GetFiles() 
For Each myItem As DirectoryInfo In mySubfolders 
RecursiveFiles(myItem.FullName) 
Next 

end function 


Here est le code réel. Essayez avec quelques modifications.

+5

Ceci est VB, pas C#. –

+3

Vous pouvez toujours convertir le code de forme VB en C# :) – Si8

+9

Vrai mais la conversion aurait dû être faite par l'affiche de réponse ... ne devrait-il pas avoir? – Joezer

Questions connexes