c# - 如何使用 Directory.EnumerateFiles() 应用多种搜索模式?
问题描述
我使用下面的代码在具有特定扩展名的目录(&它的子目录)中搜索文件:
Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1" , SearchOption.AllDirectories);
现在,我可以拥有具有不同扩展名的文件,例如“.ext1”、“.ext2”、“.ext3”。我想在我的搜索模式中结合这些扩展,如下所示:
Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1||.ext2" , SearchOption.AllDirectories);
请问有什么建议吗?
解决方案
您可以使用拆分模式字符串的自定义方法,然后调用EnumerateFiles
:
public static IEnumerable<string> MultiEnumerateFiles(string path, string patterns)
{
foreach (var pattern in patterns.Split('|'))
foreach (var file in Directory.EnumerateFiles(path, pattern, SearchOption.AllDirectories))
yield return file;
}
通过使用yield
,您可以获得与原始EnumerateFiles
.
推荐阅读
- flutter - 如何在flutter-stripe插件中启用邮政编码输入文本框?
- asp.net-core - How to add different CSS files to different layouts in blazor?
- excel - 确定两个数字的最大值
- javascript - nodemon反复重启
- apache-kafka - json列作为kafka生产者的key,根据key推送到不同的partition
- javascript - 在视图页面上使用 JavaScript 上的 Viewbag 数据
- flutter - Flutter IOS 构建失败
- angular - 无法从 ngOnInit() 中设置 page$.layout
- django - 为什么我的序列化程序字段不显示?
- arrays - CS50 Pset4 边缘编码 - 类型“RGBTRIPLE [宽度]”的索引 601 错误超出范围