c# - C# 使用 Directory.GetDirectories() 枚举文件 2 个文件夹
问题描述
使用 EnumerateDirectories 如何仅枚举 2 个文件夹结构。示例:如果我从 C:\ 开始,如何获取 C 中的文件夹以及下一层?
Directory.GetDirectories() 到目前为止唯一提供的是 SearchOption
SearchOption.AllDirectories || SearchOption.TopDirectoryOnly
这是我到目前为止所拥有的:
private static List<string> GetDirectories(string path, string searchPattern = "*")
{
try
{
return Directory.GetDirectories(path, searchPattern, SearchOption.TopDirectoryOnly).ToList();
}
catch (UnauthorizedAccessException)
{
return new List<string>();
}
}
解决方案
您对级别使用计数器并递归调用该方法。
未经测试的代码:
private static List<string> GetDirectories(string path, int level, string searchPattern = "*")
{
if (level == 0)
return Directory.GetDirectories(path, searchPattern, SearchOption.TopDirectoryOnly).ToList();
else
{
List<string> l = new List<string>();
foreach (string path2 in Directory.GetDirectories(path, searchPattern, SearchOption.TopDirectoryOnly))
l.AddRange(GetDirectories(path2, level - 1, searchPattern));
return l;
}
}
并像这样调用:
return GetDirectories(yourPath, 1, yourSearchPattern);
或者您可以将其更改为向下钻取,然后返回下一个等,但仍使用计数器。
如果您需要这些文件(尽管您的问题正文没有提及,只有标题),只需遍历结果,获取您获得的每个文件夹中的文件。
推荐阅读
- android - 即使先前的片段名为 popUpTo 根,Android 导航框架仍会显示后退箭头
- vue.js - 使用 Vue.js 未在 Bulma 选项卡中加载传单地图
- java - 尝试检索 JSON 文件时,getResourceAsStream 使用 android 返回 null
- r - 读取位于R中同一目录中的多个csv文件
- java - JSONArray 中的 JSONArray 与 Java 中的向量
- mysql - COALESCE 没有按预期工作(mysql)
- javascript - 仅在用户在 React.js 中提供输入后才解决承诺
- sql - Sql 从同一个选择和表中获取不同的 AVG
- machine-learning - 价值迭代不收敛 - 马尔可夫决策过程
- java - I want to find the last occurrence of a value in an array and also return "-1" if no such number is found