Поиск по всем вложенным каталогам

У меня есть код который выводит все каталоги из указанного места

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); // вход в рекурсию
        }
    }
}
→ Ссылка