Поиск по всем вложенным каталогам
У меня есть код который выводит все каталоги из указанного места
var dirinfo = new Directoryinfo("\\test\\exapmle");
dir = dirinfo .GetDirectories();
Но я хочу вывести все подпапки включая все вложенные в эти подпапки(то есть полностью пройтись вглубь папок и ввести все папки которые возможно вывести) Я смотрел в интернете куча примеров но они только выводит подпапки 1 уровня а дальше не заходят как можно реализовать данный алгоритм чтобы он еще быстро работал? а что касается
SearchOption.AllDirectories
он не работает так как есть некоторые папки где нет доступа
Ответы (1 шт):
Автор решения: user2614928
→ Ссылка
Вам нужно рекурсивно проходить каталоги.
void Main()
{
string rootDir = @"x:\temp";
Directories.GetDirs(rootDir);
foreach (KeyValuePair<string, string[]> paths in Directories.directoryPaths)
{
Console.WriteLine($"Root: {paths.Key}") // корневой
foreach (var nestedDirs in paths.Value)
{
Console.WriteLine($"Child:{nestedDirs}"); // дочерние каталоги
}
Console.WriteLine();
}
}
class Directories
{
public static Dictionary<string, string[]> directoryPaths = new();
public static void GetDirs(string rootDir)
{
var nestedDirs = Directory.GetDirectories(rootDir);
directoryPaths[rootDir] = nestedDirs;
foreach (var currentDir in nestedDirs);
{
GetDirs(currentDir); // вход в рекурсию
}
}
}