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

如何获取倒数第二个文件夹?C#目录操作技术求助

解决方案

核心思路

  • 一次性获取目标路径下的所有文件夹并按LastWriteTimeUtc倒序排序,避免重复读取目录提升性能
  • 通过排序后的集合直接取第1个元素(索引0)作为最后修改的文件夹,第2个元素(索引1)作为倒数第二个修改的文件夹
  • 先判断文件夹数量是否≥2,防止索引越界异常

修正后的代码

var targetDir = new DirectoryInfo(textBoxPath.Text);
var sortedFolders = targetDir.GetDirectories()
                            .OrderByDescending(d => d.LastWriteTimeUtc)
                            .ToList();

// 初始化变量
DirectoryInfo lastWrittenFolder = null;
DirectoryInfo writtenFolderBeforeLast = null;
string lastGif = null;
string secondLastGif = null;

// 检查文件夹数量并获取最后一个文件夹的gif
if (sortedFolders.Count >= 1)
{
    lastWrittenFolder = sortedFolders[0];
    var lastFolderGifs = Directory.GetFiles(lastWrittenFolder.FullName, "*.gif");
    if (lastFolderGifs.Length > 0)
    {
        lastGif = lastFolderGifs.Last();
    }
}

// 检查文件夹数量≥2时,获取倒数第二个文件夹的gif
if (sortedFolders.Count >= 2)
{
    writtenFolderBeforeLast = sortedFolders[1];
    var secondLastFolderGifs = Directory.GetFiles(writtenFolderBeforeLast.FullName, "*.gif");
    if (secondLastFolderGifs.Length > 0)
    {
        secondLastGif = secondLastFolderGifs.Last();
    }
}

// 后续可根据变量是否为null处理不存在的情况,比如:
// if (lastGif != null) { /* 执行逻辑 */ }

代码说明

  • 用ToList()缓存排序后的目录集合,避免多次LINQ查询重复读取文件系统
  • 分别判断文件夹数量和每个文件夹内gif文件的数量,避免空集合调用Last()引发异常
  • 变量名按需求替换为writtenFolderBeforeLast,语义更清晰
  • 拆分文件获取逻辑,增加空值检查,提升代码健壮性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:55:21