我正在尝试获取其中包含文件的所有文件夹路径,同时排除仅包含其他文件夹的文件夹路径。我正在使用
Directory.GetDirectories(dirPath, "*", SearchOption.AllDirectories);
我需要它做什么,除了它返回只包含其他文件夹的文件夹的路径。
答案 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();