当前位置: 首页 > news >正文

【32】C#实战篇——两个文件夹下 相同名字的文件 进行配对(两个文件夹下的文件数量和文件类型不一定相同,所以要过滤掉我们不要的文件)

文章目录

  • 1 问题描述
  • 2 分析
  • 3 代码实现

1 问题描述

如图,两个文件夹下 相同文件名的.csv文件进行配对,将配对成功的文件名按顺存分别储在数组StandardDataPathCurrentDataPath中,匹配成功一对就存储一对,注意匹配的一对文件名在两个数组中各存储一个表示对应关系,并返回匹配的总对数。

在这里插入图片描述

例如

“E:\MTF\P1\StandardData”路径下有“00000000000001Tele.csv,00000000000001Wide.csv”两个文件;
“E:\MTF\P1\CurrentData”路径下有“00000000000001Tele.csv,00000000000001Wide.csv,result_Wide.csv”三个文件。

经过配对后发现StandardData文件夹下的两个文件“00000000000001Tele.csv,00000000000001Wide.csv”分别和CurrentData文件夹下的两个文件“00000000000001Tele.csv,00000000000001Wide.csv”名字匹配。

然后我们存储结果示例:

StandardDataPath= {Path+00000000000001Tele.csv,Path+00000000000001Wide.csv},
CurrentDataPath= {Path+00000000000001Tele.csv,Path+00000000000001Wide.csv}

可以看到两个数组中存储的文件名是按顺序一一对应关系,并且文件包含完整的打开路径。

2 分析

因为 两个文件夹下的文件数量和文件类型不一定相同,所以要过滤掉我们不要的文件;

过滤条件string[] MatchFilter = { "Wide.csv", "Tele.csv", "Mid.csv" };”
只要文件名末尾部分满足““Wide.csv”, “Tele.csv”, “Mid.csv””任意一个,则认为是我们的想要的文件。注意同一个文件名末尾只有MatchFilter数组中一个字符串是匹配的,不存在同一个文件有两多个不同的末尾部分。然后在按照配对规则对文件匹配,匹配成功一对就存储一对,分别储在数组StandardDataPath、CurrentDataPath中。下面是函数名定义。

在这里插入图片描述

3 代码实现

 private int MatchCsvFiles(string standardDataPath, string currentDataPath, string[] MatchFilter, out string[] standardDataFiles, out string[] currentDataFiles){// 构建匹配后缀的正则表达式模式,用来匹配文件名是否以指定的后缀字符串中的任意一个结尾。string suffixPattern = "(" + string.Join("|", MatchFilter.Select(filter => Regex.Escape(filter))) + ")$";var regex = new Regex(suffixPattern);// 获取标准数据文件夹下的所有文件var standardFiles = Directory.GetFiles(standardDataPath);// 存储配对成功的文件路径var matchedStandardFiles = new List<string>();var matchedCurrentFiles = new List<string>();// 遍历标准数据文件foreach (var standardFile in standardFiles){// 获取文件名string fileName = Path.GetFileName(standardFile);// 如果文件名匹配后缀规则if (regex.IsMatch(fileName)){// 构造当前数据文件夹中对应的文件路径string currentFilePath = Path.Combine(currentDataPath, fileName);// 如果当前数据文件夹中存在对应文件,则存储匹配成功的文件对if (File.Exists(currentFilePath)){matchedStandardFiles.Add(standardFile);matchedCurrentFiles.Add(currentFilePath);}}}// 将配对成功的文件路径数组赋值给输出参数standardDataFiles = matchedStandardFiles.ToArray();currentDataFiles = matchedCurrentFiles.ToArray();// 返回配对成功的文件对数return standardDataFiles.Length;}

匹配存储结果
在这里插入图片描述

http://www.dtcms.com/a/323153.html

相关文章:

  • ArkUI中的布局组件Row(一)
  • 计算机网络1-6:计算机网络体系结构
  • 【Python 高频 API 速学 ④】
  • Office安装使用?借助Ohook开源工具?【图文详解】微软Office产品
  • 使用 Conda 安装 xinference[all](详细版)
  • 一个“加锁无效“的诡异现象
  • Java 日志从入门到精通:告别日志混乱
  • C++高性能细粒度时间跟踪实战
  • Python基础教程(五)list和tuple:深度剖析Python列表与元组的终极对决
  • PHP-单引号和双引号(通俗易懂讲解版)
  • 卫星遥感与AI大模型
  • JS逆向实战案例之----【通姆】252个webpack模块自吐
  • NFS 挂载失败** 问题(`mount: wrong fs type`),以下是详细的排查步骤和解决方案
  • 20250809在WIN10下使用diskpart命令格式化TF卡【卡刷荣品PRO-RK3566的核心板】
  • 云渲染的未来已来:渲酷云如何重新定义数字内容生产效率
  • SimBA算法实现过程
  • 39.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--调整发布脚本
  • 利用SymPy与SciPy高效求解参数化方程组的数值解
  • [激光原理与应用-207]:光学器件 - 光纤种子源激光器常用元器件
  • 9-DS18B20-verilog驱动
  • Zabbix自动注册:轻松实现大规模监控
  • [LLM 应用评估] 评估指标 | 评估协调器 | 测试集生成组件
  • 【MATLAB例程】基于UKF的IMM例程,模型使用CA(匀加速)和CT(协调转弯)双模型,二维环境下的轨迹定位。附代码下载链接
  • Python映射合并技术:多源数据集成的高级策略与工程实践
  • Python如何合并两个Excel文件
  • Qt 综述:从基础到一般应用
  • 【第十章】高阶函数揭秘:map、filter、reduce 玩转数据流
  • 数据结构与算法:树状数组
  • BGP笔记
  • [FOC电机控制]霍尔传感器于角度问题