Wie durchlaufe ich alle Dateien in einem Verzeichnis in c # .net?

121

Ich möchte die Dateien im Ordner und auch in seinen Unterordnern abrufen. Der folgende Code ruft die Dateien nicht in seinem Unterordner ab:

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

Kann mir bitte jemand sagen, wie man das in c # .net implementiert?

Prem
quelle
2
Ich habe immer die MSDN-Methode bevorzugt. Am Ende dieses Links finden Sie ein rekursives Beispiel mit einem Konsolenprogramm (C #).
Justin
1
@Panuvin - Hinweis: Der MSDN-Code ist etwas gefährlich. Für sehr große Ordner- und Unterordnerinhalte (viele, viele Dateien) können Sie eine StackOverflow-Ausnahme erhalten (aufgrund des rekursiven Codes)
Joezer

Antworten:

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

Dieser letzte Parameter wirkt sich genau auf das aus, worauf Sie sich beziehen. Setzen Sie ihn auf AllDirectories für jede Datei in Unterordnern , einschließlich, und setzen Sie ihn auf TopDirectoryOnly wenn Sie im Verzeichnis suchen möchten gegeben und keine Unterordner.

Weitere Informationen finden Sie in MDSN: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

Migwell
quelle
5
Dies führt zu einer Endlosschleife, wenn sich in Ihrer Ordnerstruktur eine Schleife befindet. Siehe msdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser
Was ist der Zweck des mittleren Parameters?
nützlichBee
2
Es heißt searchPattern und ist ein Filter, mit dem Dateien ausgewählt werden. In diesem Fall werden alle Dateien ausgewählt, die auf "ProfileHandler.cs" enden. Werfen
Migwell
3

Versuchen Sie es mit dem folgenden Code

Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs",SearchOption.AllDirectories)
TalentTuner
quelle