2010-11-23 15 views
73

quiero conseguir los archivos de la carpeta y también en su subfolders.The siguiente código no obtener los archivos en su subcarpeta:¿Cómo recorrer todos los archivos en un directorio en C# .net?

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

Puede alguien por favor dígame cómo implementar esto en C#?

+2

siempre he prefería el método MSDN de hacer las cosas. En la parte inferior de [este enlace] (http://msdn.microsoft.com/en-us/library/07wt70x2.aspx) proporcionan un ejemplo recursivo con un programa de consola (C#). – Justin

+1

@Panuvin - Nota: El código de MSDN es un poco peligroso. Para contenido de carpetas y subcarpetas muy grande (muchos archivos), puede obtener una excepción de StackOverflow (debido al código recursivo) – Joezer

Respuesta

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

que duran los efectos de parámetros exactamente lo que usted se refiere. Establézcalo en AllDirectories para cada archivo incluido en subcarpetas, y configúrelo en TopDirectoryOnly si solo desea buscar en el directorio especificado y no en las subcarpetas.

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

+5

Esto hará que el bucle sea infinito si hay un bucle en la estructura de su carpeta. Consulte http://msdn.microsoft.com/en-us/library/ms143448.aspx –

+0

¿Cuál es el propósito del parámetro central? – usefulBee

+1

Se llama searchPattern y es un filtro por el cual se seleccionan los archivos. En este caso, seleccionará todos los archivos que terminan en "ProfileHandler.cs". Eche un vistazo a [MDSN] (https://msdn.microsoft.com/en-us/library/ms143316 (v = vs.110) .aspx) – Miguel

2

tratan a continuación código

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

Puede ser que usted puede probar esta función con cambios menores;

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 es el código real. Pruebe con algunas modificaciones.

+5

Esto es VB, no C#. –

+3

Siempre puede convertir el código de VB a C# :) – Si8

+9

Es cierto, pero la conversión debería haber sido hecha por el cartel de respuestas ... ¿no debería ser así? – Joezer

Cuestiones relacionadas