¿Cómo recorrer todos los archivos en un directorio en c # .net?

121

Quiero obtener los archivos en la carpeta y también en sus subcarpetas. El siguiente código no obtiene los archivos en su subcarpeta:

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

¿Alguien puede decirme cómo implementar esto en c # .net?

Prem
fuente
2
Siempre he preferido el método MSDN para hacer las cosas. En la parte inferior de este enlace , proporcionan un ejemplo recursivo con un programa de consola (C #).
Justin
1
@Panuvin - Nota: El código MSDN es un poco peligroso. Para contenido de carpetas y subcarpetas muy grandes (muchos archivos), puede obtener una excepción de StackOverflow (debido al código recursivo)
Joezer

Respuestas:

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

Ese último parámetro afecta exactamente a lo que te refieres. Configúrelo en AllDirectories para cada archivo, incluido en subcarpetas, y configúrelo en TopDirectoryOnly si solo desea buscar en el directorio proporcionado y no en las subcarpetas.

Consulte MDSN para obtener más detalles: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

Migwell
fuente
5
Esto hará un bucle infinito si hay un bucle en la estructura de su carpeta. Ver msdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser
¿Cuál es el propósito del parámetro medio?
útil Abeja
2
Se llama searchPattern y es un filtro mediante el cual se seleccionan los archivos. En este caso, seleccionará todos los archivos que terminen en "ProfileHandler.cs". Eche un vistazo a MDSN
Migwell
3

prueba el código siguiente

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