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
相关产品推荐
相关产品推荐

