Как получить все каталоги на жестком диске (C#)?

Как я могу получить все каталоги (с подкаталогами) на hardrive, используя C#?

Пример ответа:

C:\
C:\1
C:\2
C:\2\1
C:\2\1\4
C:\2\1\4\5
C:\2\1\4\5\6
C:\3

2 ответа

using System.IO;

var directories = new List<string>(Directory.GetDirectories(@"c:\", "*", SearchOption.AllDirectories));

directories.ForEach(directory => Console.WriteLine(directory));

Ответ Джастина будет работать на 100%. Если это больше касается изучения техники, чем получения результата, вам понадобится рекурсивная функция. Все это означает, что нам нужна функция, которая будет вызывать себя для результатов, которые она возвращает.

public static void GetDirectories(string path, bool recursive)
{
    Console.WriteLine(path); // write the name of the current directory
    if (recursive) // if we want to get subdirectories
    { 
        try // getting directories will throw an error if it is a path you don't have access to
        {
            foreach (var child in Directory.GetDirectories(path)) // get all the subdirectories for the given path
            {
                GetDirectories(child, recursive); // call our function for each sub directory
            }
        }
        catch (UnauthorizedAccessException ex) // handle unauthorized access errors
        {
            Console.WriteLine(string.Format("You don't have permission to view subdirectories of {0}",path));
        }

    }
}

А потом назвать это:

static void Main(string[] args)
{
    GetDirectories("c:\\", true);
    Console.ReadLine();
}

Опять же, если вы просто пытаетесь получить список, ответьте на вопрос Джастина, но это то, как вы можете сделать это самостоятельно.

Другие вопросы по тегам