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

如何获取目录下所有文件并筛选最新文件?现有代码返回非预期结果

解决获取目录最新文件的问题

你的代码问题出在Directory.GetFiles返回的文件列表不是按时间排序的,它的顺序由文件系统的存储逻辑决定,所以直接取Last()根本拿不到最新的文件。

要获取最新文件,得先按文件的修改/创建时间排序,再取第一个。下面是两种可行的实现方式:

方式一:用File.GetLastWriteTime直接排序

// 遍历目录及所有子目录的文件(EnumerateFiles比GetFiles更高效,适合文件多的场景)
var allFiles = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories);

// 按文件最后修改时间从新到旧排序,取第一个
var latestFilePath = allFiles.OrderByDescending(file => File.GetLastWriteTime(file)).FirstOrDefault();

if (latestFilePath != null)
{
    // 提取文件名
    var latestFileName = Path.GetFileName(latestFilePath);
    Console.WriteLine(latestFileName);
}
else
{
    Console.WriteLine("当前目录及子目录下没有文件");
}

方式二:用DirectoryInfo和FileInfo获取更详细的文件信息

var dirInfo = new DirectoryInfo(path);
// 获取所有文件并按最后修改时间倒序
var latestFileInfo = dirInfo.GetFiles("*.*", SearchOption.AllDirectories)
                           .OrderByDescending(f => f.LastWriteTime)
                           .FirstOrDefault();

if (latestFileInfo != null)
{
    // 直接拿到文件名
    Console.WriteLine(latestFileInfo.Name);
}
else
{
    Console.WriteLine("当前目录及子目录下没有文件");
}

补充说明

  • 如果需要按创建时间而非修改时间判断“最新”,把代码里的LastWriteTime换成CreationTime即可
  • FirstOrDefault能避免目录为空时抛出异常,比直接用First()更安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:05:32