本文介绍了在所有子目录中搜索某些文件,跳过一些文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想获取具有特定扩展名的所有文件的所有路径,但要跳过某些文件夹.我使用此代码可以正常工作,但不排除指定的文件夹.
I want to get all paths to all files with a certain extension but skipping certain folders. I use this code which works fine but does not exclude the specified folders.
public static IEnumerable<string> EnumerateFiles(string path, string searchPattern, SearchOption searchOpt)
{
try
{
var dirFiles = Enumerable.Empty<string>();
if (searchOpt == SearchOption.AllDirectories)
{
dirFiles = Directory.EnumerateDirectories(path)
.Where(y => !y.Contains("Program Files") || !y.Contains("Windows"))
.SelectMany(x => EnumerateFiles(x, searchPattern, searchOpt));
}
return dirFiles.Concat(Directory.EnumerateFiles(path, searchPattern));
}
catch (UnauthorizedAccessException ex)
{
return Enumerable.Empty<string>();
}
}
但是根据我对其他问题的研究,这正是我应该做的.请问我要去哪里错了?
But based on my research of other questions this is exactly what I should be doing. Where am I going wrong please?
用法是:
var enumerable = EnumerateFiles(@"C:\", "*.jpg", SearchOption.AllDirectories);
推荐答案
我想您想排除Program Files
和 Windows
,所以请使用&&
而不是||
.
I guess that you want to exlude Program Files
and Windows
, so use &&
instead of ||
.
.Where(y => !y.Contains("Program Files") && !y.Contains("Windows"))
这篇关于在所有子目录中搜索某些文件,跳过一些文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!