Як прокрутити всі файли в каталозі c # .net?


121

Я хочу отримати файли у папці, а також у її підпапках. Наступний код не отримує файли у його папці:

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

Може хто-небудь, скажіть, будь ласка, як це реалізувати в c # .net?


2
Я завжди віддавав перевагу методу MSDN для виконання справ. У нижній частині цього посилання вони надають рекурсивний приклад з консольною програмою (C #).
Джастін

1
@Panuvin - Примітка: код MSDN є трохи небезпечним. Для дуже великого вмісту папок і підпапок (багато багатьох файлів) ви можете отримати виняток StackOverflow (через рекурсивний код)
Joezer,

Відповіді:


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

Цей останній параметр впливає саме на те, що ви маєте на увазі. Встановіть його в AllDirectories для кожного файлу, в тому числі в підпапках, і встановіть його на TopDirectoryOnly, якщо ви хочете лише шукати в заданому каталозі, а не в папках.

Детальні відомості див. У MDSN: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx


5
Це буде нескінченним циклом, якщо в структурі вашої папки є цикл. Дивіться msdn.microsoft.com/en-us/library/ms143448.aspx
Ентоні Візер

Яке призначення середнього параметра?
корисноБе

2
Це називається searchPattern і це фільтр, за допомогою якого вибираються файли. У цьому випадку він вибере всі файли, що закінчуються на "ProfileHandler.cs". Подивіться MDSN
Міґвелл

3

спробуйте нижче код

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

1

Ви можете ознайомитись із цією сторінкою, де відображається функція «Копіювання глибокої папки», вона використовує рекурсивні засоби для повторення файлів і має кілька справжніх підказок, як-от методи фільтрації тощо.

http://www.codeproject.com/Tips/512208/Folder-Directory-Deep-Copy-including-sub-directori

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.