Используйте Directory.GetDirectories
, чтобы получить подкаталоги каталога, указанного в "your_directory_path" .В результате получается массив строк.
var directories = Directory.GetDirectories("your_directory_path");
По умолчанию это возвращает подкаталоги только на один уровень глубины.Есть варианты возврата всех рекурсивно и фильтрации результатов, задокументировано здесь и показано в ответе Клайва.
Предотвращение исключения UnauthorizedAccessException
Вполне возможно, что вы получите UnauthorizedAccessException
, если попадете в каталог, к которому у вас нет доступа.
Возможно, вам придется создать собственный метод, который обрабатывает исключение, например так:
public class CustomSearcher
{
public static List<string> GetDirectories(string path, string searchPattern = "*",
SearchOption searchOption = SearchOption.TopDirectoryOnly)
{
if (searchOption == SearchOption.TopDirectoryOnly)
return Directory.GetDirectories(path, searchPattern).ToList();
var directories = new List<string>(GetDirectories(path, searchPattern));
for (var i = 0; i < directories.Count; i++)
directories.AddRange(GetDirectories(directories[i], searchPattern));
return directories;
}
private static List<string> GetDirectories(string path, string searchPattern)
{
try
{
return Directory.GetDirectories(path, searchPattern).ToList();
}
catch (UnauthorizedAccessException)
{
return new List<string>();
}
}
}
А затем назовите это так:
var directories = CustomSearcher.GetDirectories("your_directory_path");