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

如何通过GetFiles同时按文件名前缀与创建时间范围筛选文件?

解决GetFiles同时筛选文件名前缀和创建时间的问题

我来帮你搞定这个需求!你当前的代码已经能正确筛选出前缀为ArchiveDeleteLog的文件了,要把创建时间范围这个条件也加进去,其实结合LINQ就能轻松实现,不用拆分语句。

方案一:结合GetFiles与LINQ过滤

先定义好你需要的时间范围,然后在获取前缀匹配的文件后,用Where方法过滤时间条件:

// 替换成你的目标文件夹路径
string folderPath = @"C:\Your\Target\Folder";
// 定义时间范围,这里示例为2024年1月1日到当前时间
DateTime startCreationDate = new DateTime(2024, 1, 1);
DateTime endCreationDate = DateTime.Now;

DirectoryInfo dir = new DirectoryInfo(folderPath);
FileInfo[] files = dir.GetFiles("ArchiveDeleteLog*", SearchOption.TopDirectoryOnly)
                      .Where(file => file.CreationTime >= startCreationDate 
                                  && file.CreationTime <= endCreationDate)
                      .ToArray();

方案二:用EnumerateFiles提升大文件夹性能

如果目标文件夹里的文件数量非常多,GetFiles会一次性把所有匹配前缀的文件加载到内存里,这时候换成EnumerateFiles更高效——它是延迟加载的,会逐个处理文件,不用占用过多内存:

FileInfo[] files = dir.EnumerateFiles("ArchiveDeleteLog*", SearchOption.TopDirectoryOnly)
                      .Where(file => file.CreationTime >= startCreationDate 
                                  && file.CreationTime <= endCreationDate)
                      .ToArray();

小提示

  • 如果需要更可靠的时间(比如担心系统时间调整影响CreationTime),可以换成LastWriteTime(文件最后写入的时间)或者LastAccessTime,根据你的实际需求选择。
  • 记得要引用System.Linq命名空间,否则Where方法会报错哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:12:14