Поиск C# подкаталога (не для файлов)

Каждый пример, который я вижу, кажется, для того, чтобы рекурсивно добраться, файлы в подкаталогах использует файлы только. То, что я пытаюсь сделать, искать, папка для конкретного подкаталога, названного "xxx" затем, сохраняют тот путь к переменной, таким образом, я могу использовать его для других вещей.

Действительно ли это возможно без цикличного выполнения через все каталоги и сравнения по имени?

8
задан Brad 1 April 2010 в 14:00
поделиться

4 ответа

Ну

Directory.GetDirectories(root);

вернет вам массив подкаталогов.

Затем вы можете использовать Linq, чтобы найти интересующий вас:

IEnumerable<string> list = Directory.GetDirectories(root).Where(s => s.Equals("test"));

, который не является циклом в вашем коде, но, тем не менее, является циклом. Итак, окончательный ответ - «нет, вы не можете найти папку« test »без цикла».

Вы можете добавить .SingleOrDefault () в Linq, но это будет зависеть от того, что вы хотите сделать, если ваша «тестовая» папка не может быть найдена.

Если вы измените вызов GetDirectories , чтобы включить SearchOption SearchOption.AllDirectories , то он также выполнит рекурсию за вас. Очевидно, что в этом случае вызов может вернуть более одного элемента, если в вашем дереве каталогов было более одной папки с именем «test».

11
ответ дан 5 December 2019 в 08:51
поделиться

Вы можете использовать Windows Search, который также предоставляет api для .Net. Вот более подробная информация: Windows Search 4.0 для разработчиков

0
ответ дан 5 December 2019 в 08:51
поделиться

Прежде всего, «Нет, это невозможно без просмотра всех каталогов и сравнения по имени».

Я считаю, что ваш настоящий вопрос: «Есть ли существующий API, который будет обрабатывать для меня цикл по всем каталогам и сравнение по имени?»

Да, есть. Он называется Directory.Exists () :

var xxxPath = Path.Combine(parentFolder, "xxx");
if (Directory.Exists(xxxPath))
    savedPath = xxxPath;
1
ответ дан 5 December 2019 в 08:51
поделиться

Да, я считаю, что единственное доступное решение (за исключением сторонних библиотек) - это рекурсивный поиск каталога посредством сравнения имен.

0
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: