C#获取所有文件夹和子文件夹的路径,不包括仅包含其他文件夹的文件夹

时间:2017-12-09 02:07:56

标签: c# directory

我正在尝试获取其中包含文件的所有文件夹路径,同时排除仅包含其他文件夹的文件夹路径。我正在使用

Directory.GetDirectories(dirPath, "*", SearchOption.AllDirectories);

我需要它做什么,除了它返回只包含其他文件夹的文件夹的路径。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是EnumerateFiles用于目录及其所有子目录,并获取其目录名称的Distinct()列表:

List<string> directoriesWithFiles = Directory
    .EnumerateFiles(rootDir, "*", SearchOption.AllDirectories)
    .Select(Path.GetDirectoryName)
    .Distinct()
    .ToList();

我认为这样做的第一种方法是使用EnumerateDirectories,然后对每个目录使用EnumerateFiles来过滤掉不包含任何文件的目录。但事实证明这比上述方法要慢得多:

List<string> directoriesWithFiles = Directory
    .EnumerateDirectories(rootDir, "*", SearchOption.AllDirectories)
    .Where(d => Directory.EnumerateFiles(d).Any())
    .ToList();