¿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?


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


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)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.