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?


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


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)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.