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

VB.NET中用通配符查找文件并获取最新修改文件

查找指定通配符下修改时间最近的文件

你可以结合LINQ和Directory.EnumerateFiles来实现更简洁高效的方案,相比手动循环可读性更强,同时在大文件量场景下内存占用更优:

.NET 6 及以上版本(推荐)

利用.NET 6新增的MaxBy方法,直接获取修改时间最新的文件,代码最简洁:

string targetFolder = @"C:\Your\Target\Folder";
string searchPattern = "template*.txt";

var latestModifiedFile = Directory.EnumerateFiles(targetFolder, searchPattern)
    .Select(filePath => new FileInfo(filePath))
    .MaxBy(fileInfo => fileInfo.LastWriteTime);

if (latestModifiedFile != null)
{
    // 找到文件后的处理逻辑
    Console.WriteLine($"最近修改的文件:{latestModifiedFile.FullName},修改时间:{latestModifiedFile.LastWriteTime}");
}
else
{
    Console.WriteLine("未找到匹配通配符的文件");
}

.NET 5 及以下版本

如果使用较低版本的.NET框架,没有MaxBy方法,可以通过降序排序后取第一个:

string targetFolder = @"C:\Your\Target\Folder";
string searchPattern = "template*.txt";

var latestModifiedFile = Directory.EnumerateFiles(targetFolder, searchPattern)
    .Select(filePath => new FileInfo(filePath))
    .OrderByDescending(fileInfo => fileInfo.LastWriteTime)
    .FirstOrDefault();

// 后续判断逻辑同上

为什么这是更优的实现?

  • 内存效率更高:Directory.EnumerateFiles采用延迟枚举,不会一次性将所有匹配的文件路径加载到内存中,当文件夹内文件数量极大时,比Directory.GetFiles更节省内存。
  • 代码简洁可读:LINQ链式操作将"获取文件-转换为文件信息-筛选最新"的逻辑清晰串联,相比手动循环代码更紧凑,可读性更强。
  • 性能接近手动循环:LINQ底层的枚举逻辑和手动循环效率几乎一致,不会带来额外的性能损耗。

注意事项

  • 如果目标文件夹不存在,会抛出DirectoryNotFoundException,可以提前用Directory.Exists(targetFolder)判断,或者用try-catch捕获异常。
  • 若需要搜索子文件夹,可以在EnumerateFiles中添加第三个参数SearchOption.AllDirectories。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:15:44