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

Java根据文件名前缀自动分组图片文件

需求:一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理。需通过代码自动归类整理。根据文件名前缀将图片文件自动分组,为每一组创建一个文件夹来归档。


背景

一批图片文件,命名格式如下:

A_20241021-1.jpg
A_20241021-2.jpg
A_20241022-1.png
A_20241023-1.xml

-1, -2 之前的部分是一致的。前缀相同的文件属于同一组。根据这个前缀,把它们分到各自的“文件夹”中。


分析思路

  1. 提取文件名前缀:以 -数字 为分隔,去掉后缀名,取前半部分作为分组依据。
  2. 使用 Map 存储分组结果:key 是前缀,value 是对应的文件列表。
  3. 输出或移动到对应的文件夹中

实现代码

下面是完整的示例代码,重点是如何提取前缀并进行分组:

import java.util.*;public class FileGrouper {public static void main(String[] args) {// 示例文件名列表List<String> fileNames = Arrays.asList("A_20241021-1.jpg","A_20241021-2.jpg","A_20241022-1.jpg","A_20241023-1.jpg");// 存储分组后的文件名Map<String, List<String>> groupedFiles = new HashMap<>();for (String fileName : fileNames) {// 提取前缀部分作为 keyString prefix = getPrefix(fileName);// 添加到对应的分组groupedFiles.computeIfAbsent(prefix, k -> new ArrayList<>()).add(fileName);}// 输出分组结果for (Map.Entry<String, List<String>> entry : groupedFiles.entrySet()) {System.out.println("文件夹: " + entry.getKey());for (String file : entry.getValue()) {System.out.println("  " + file);}}}/*** 获取文件名前缀(去掉 `-数字` 和扩展名)*/private static String getPrefix(String fileName) {int lastDashIndex = fileName.lastIndexOf('-');if (lastDashIndex != -1) {return fileName.substring(0, lastDashIndex);}return fileName;}
}

输出结果

运行后,你会得到如下输出:

文件夹: A_20241021A_20241021-1.jpgA_20241021-2.jpg
文件夹: A_20241022A_20241022-1.jpg
文件夹: A_20241023A_20241023-1.jpg

分组成功,为每组生成了“文件夹名”。

http://www.xdnf.cn/news/5591.html

相关文章:

  • 社交APP如何借助游戏盾守护业务稳定
  • 配置Hadoop集群环境-使用脚本命令实现集群文件同步
  • React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题
  • Babel进阶:如何自定义插件?
  • 如何使用Launch4J将我们jar包变成一个可执行文件exe(依赖解压的jdk)
  • 常用的设计模式详解
  • BUUCTF 大流量分析(二) 1
  • Pycharm中No Conda enviroment selected
  • o.redisson.client.handler.CommandsQueue : Exception occured. Channel
  • 判断一个数是不是素数的最高效的算法
  • 在Fortran中输出类似Markdown的表格
  • Python Day23 学习
  • [pgsql]未认可的配置参数 “database_mode“
  • AutoDL租用服务器教程
  • 各类大豆相关数据集大合集
  • 动手学深度学习12.3.自动并行-笔记练习(PyTorch)
  • 四、SpringMVC实战:构建高效表述层框架
  • 【AutoGen深度解析】下一代AI代理编程框架实战指南
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(19):て形/ないで
  • SAP学习笔记 - 开发09 - BTP简介,BTP在SAP产品中的位置
  • 代码随想录算法训练营第三十八天|动态规划part6(完全背包2)
  • 莒县第六实验小学开展全国“防灾减灾日”防震演练活动
  • vue3+dhtmlx-gantt实现甘特图展示
  • react项目阅读记录
  • 打破产品思维--被讨厌的勇气--实战5
  • phpstorm2024.3 设置中文
  • 《Vue.js》阅读之响应式数据与副作用函数
  • Hive HA配置高可用
  • 无线定位之 二 SX1302 网关源码 thread_down 线程详解
  • 奇次谐波和偶次谐波【EMC】