Use Directory.GetDirectories获取指定目录的子目录“你的目录路径”。结果是一个字符串数组。
var directories = Directory.GetDirectories("your_directory_path");
默认情况下,仅返回一层深度的子目录。有选项可以递归返回所有内容并过滤结果,记录在这里,并在克莱夫的回答中显示。
避免 UnauthorizedAccessException
您很可能会得到一个UnauthorizedAccessException
如果您访问了您无权访问的目录。
您可能必须创建自己的方法来处理异常,如下所示:
public class CustomSearcher
{
public static List<string> GetDirectories(string path, string searchPattern = "*",
SearchOption searchOption = SearchOption.AllDirectories)
{
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");
这会递归地遍历目录及其所有子目录。如果它到达无法访问的子目录,则会抛出异常UnauthorizedAccessException
,它捕获异常并仅返回该不可访问目录的空列表。然后它继续到下一个子目录。