You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DirectoryInfo.GetFiles实现多筛选获取FileInfo对象

如何通过DirectoryInfo获取满足多筛选条件的FileInfo对象列表?

你可以通过两种方式实现多条件筛选的FileInfo列表获取,核心思路是结合DirectoryInfo.GetFiles与LINQ,或者合并多个筛选结果:

方法一:先获取基础文件集,再用LINQ添加多条件过滤

先通过GetFiles获取目标目录下的基础文件集合(比如所有文件),再利用LINQ的Where方法对FileInfo对象的属性进行多条件判断,逻辑和你之前用字符串路径的版本完全对应,只是操作对象变为FileInfo:

DirectoryInfo di = new DirectoryInfo(sLogPath);
var files = di.GetFiles("*.*", SearchOption.TopDirectoryOnly)
              .Where(f => f.Name.StartsWith("abc", StringComparison.CurrentCultureIgnoreCase) 
                       || f.Name.StartsWith("def", StringComparison.CurrentCultureIgnoreCase));

注意:这里使用f.Name来判断文件名开头,和你原始代码中对路径字符串的判断逻辑一致;如果需要判断完整路径,可以改用f.FullName。

这种方法适合复杂筛选场景,比如除了文件名规则,还需要结合文件大小、修改时间等FileInfo的其他属性进行过滤。

方法二:合并多个通配符筛选结果

如果你的筛选条件可以拆分为多个独立的通配符规则,可以分别调用GetFiles获取对应结果,再用Union合并(自动去重):

DirectoryInfo di = new DirectoryInfo(sLogPath);
var files = di.GetFiles("abc*.*", SearchOption.TopDirectoryOnly)
              .Union(di.GetFiles("def*.*", SearchOption.TopDirectoryOnly));

这种方式的优势是利用系统级的通配符筛选,在文件数量较多时效率可能更高,适合规则简单的多条件场景。

内容的提问来源于stack exchange,提问作者NoBullMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:46:00