首页 > 解决方案 > 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>();
        }
    }

标签: c#directorysearcher

解决方案


您对级别使用计数器并递归调用该方法。

未经测试的代码:

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);

或者您可以将其更改为向下钻取,然后返回下一个等,但仍使用计数器。

如果您需要这些文件(尽管您的问题正文没有提及,只有标题),只需遍历结果,获取您获得的每个文件夹中的文件。


推荐阅读