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

C# System.IO操作:如何获取文件夹内最后更新的动态版本项目文件

自动选取最新项目文档实现方案

核心思路

先遍历目标文件夹下符合命名规则的.PRO项目文件,按文件最后更新时间/文件名内的修订号排序取最高值,再代入InsertProject方法调用即可。

方案1:按最后修改时间筛选(推荐)

不依赖文件名修订号规则,直接取最新修改的匹配文件,避免人工改文件名导致的版本混乱,C# 实现示例如下:

// 配置路径和匹配规则
string targetFolder = @"C:\Master\";
string filePrefix = "959824-5.";
string fileExt = ".PRO";

// 遍历匹配文件并按修改时间倒序排列
var validFiles = Directory.GetFiles(targetFolder, $"{filePrefix}*{fileExt}")
    .Select(path => new FileInfo(path))
    .OrderByDescending(file => file.LastWriteTime)
    .ToList();

if (validFiles.Count > 0)
{
    // 取最新文件调用插入方法
    string latestFile = validFiles.First().FullName;
    InsertProject(document, latestFile, document.Drawing.Pages.Count - 1);
}
else
{
    // 自定义无匹配文件的异常处理逻辑
    throw new FileNotFoundException("未找到符合规则的项目文档");
}

方案2:按文件名修订号筛选

如果需要严格按版本号优先级选取,可提取文件名内的修订号排序:

var validFiles = Directory.GetFiles(targetFolder, $"{filePrefix}*{fileExt}")
    .Select(path => new {
        FullPath = path,
        // 提取修订号
        RevNum = int.TryParse(
            Path.GetFileNameWithoutExtension(path).Substring(filePrefix.Length), 
            out int rev) ? rev : -1
    })
    .Where(file => file.RevNum >= 0)
    .OrderByDescending(file => file.RevNum)
    .ToList();

if (validFiles.Count > 0)
{
    InsertProject(document, validFiles.First().FullPath, document.Drawing.Pages.Count - 1);
}

注意事项

  • 如果项目前缀959824-5.不是固定值,可改为动态参数传入
  • 调用前可增加文件占用校验逻辑,避免读取还在写入过程中的未完成更新文件
  • 多个项目共存的场景下可调整通配符规则,缩小匹配范围避免误选其他项目文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:36:03