Como fazer um loop por todos os arquivos em um diretório em c # .net?


121

Desejo obter os arquivos da pasta e também de suas subpastas. O código a seguir não obtém os arquivos de sua subpasta:

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

Alguém pode me dizer como implementar isso em c # .net?


2
Sempre preferi o método MSDN de fazer as coisas. Na parte inferior deste link, eles fornecem um exemplo recursivo com um programa de console (C #).
Justin

1
@Panuvin - Observação: o código do MSDN é um pouco perigoso. Para pastas muito grandes e conteúdo de subpasta (muitos arquivos), você pode obter uma exceção StackOverflow (por causa do código recursivo)
Joezer

Respostas:


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

Esse último parâmetro afeta exatamente o que você está se referindo. Defina-o como AllDirectories para cada arquivo, incluindo em subpastas, e defina-o como TopDirectoryOnly se desejar pesquisar apenas no diretório fornecido e não nas subpastas.

Consulte MDSN para obter detalhes: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx


5
Este será um loop infinito se houver um loop em sua estrutura de pastas. Consulte msdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser,

Qual é a finalidade do parâmetro do meio?
útilBee

2
É chamado de searchPattern e é um filtro pelo qual os arquivos são selecionados. Nesse caso, ele selecionará todos os arquivos que terminam em "ProfileHandler.cs". Dê uma olhada no MDSN
Migwell

3

tente o código abaixo

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.