Как я могу получить все каталоги (с подкаталогами) на жестком диске с помощью C#?Как получить все каталоги на жестком диске (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
Как я могу получить все каталоги (с подкаталогами) на жестком диске с помощью C#?Как получить все каталоги на жестком диске (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
using System.IO;
var directories = new List<string>(Directory.GetDirectories(@"c:\", "*", SearchOption.AllDirectories));
directories.ForEach(directory => Console.WriteLine(directory));
спасибо, Justin –
ответ Джастина будет 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();
}
Опять же, если вы просто пытаетесь получить список пойти с ответом Джастина, но это, как вы могли бы сделать это по своему усмотрению.
Возможно, вы уже что-то предприняли? –
[Практическое руководство. Итерация через дерево каталогов (руководство по программированию на C#)] (https://msdn.microsoft.com/en-us/library/bb513869.aspx?f=255&MSPPError=-2147217396). –
Я новичок в C#. Я попытался сделать это, но безуспешно. –