如何用Java批量重命名文件夹文件以移除指定冗余文本?
Java移除文件名中的签名时间戳
针对你需要移除文件名中_signed_YYYYMMDDHHMMSS这类文本的需求,这里提供一个适合初学者的Java实现方案,逻辑清晰且容易理解:
核心思路
通过正则表达式匹配文件名中固定格式的_signed_+14位时间戳(YYYYMMDDHHMMSS),将这部分内容替换为空,保留原文件名的前缀和后缀。
正则表达式说明
使用正则_signed_\d{14}来匹配目标内容:
_signed_:匹配固定的前缀文本\d{14}:匹配连续14个数字(对应时间戳的格式)
完整代码示例
import java.io.File; import java.util.regex.Matcher; import java.util.regex.Pattern; public class FileRenameTool { public static void main(String[] args) { // 替换为你需要处理的文件目录路径 String targetDir = "C:\\你的文件目录路径"; File dir = new File(targetDir); // 校验目录是否存在且是目录 if (!dir.exists() || !dir.isDirectory()) { System.out.println("指定的目录不存在或不是有效目录"); return; } // 编译正则表达式,提升效率 Pattern pattern = Pattern.compile("_signed_\\d{14}"); // 遍历目录下的所有文件 File[] files = dir.listFiles(); if (files != null) { for (File file : files) { if (file.isFile()) { // 只处理文件,跳过目录 String originalName = file.getName(); Matcher matcher = pattern.matcher(originalName); // 如果匹配到目标内容,执行重命名 if (matcher.find()) { String newName = matcher.replaceFirst(""); File newFile = new File(dir, newName); // 执行重命名操作,判断是否成功 if (file.renameTo(newFile)) { System.out.println("重命名成功:" + originalName + " -> " + newName); } else { System.out.println("重命名失败:" + originalName); } } } } } } }
使用说明
- 将代码中的
targetDir替换为你实际存放文件的目录路径 - 运行代码前,建议先备份文件,避免意外情况
- 代码只会处理目录下的直接文件,不会递归处理子目录(如果需要递归,可以添加递归遍历的逻辑)
针对你的示例文件测试
原文件名:
20230626_EdcPgw_0012041844_0001131023000001_ETAX_signed_20240103121502.pdf
20230626_EdcPgw_0531072999_0001131023000003_ETAX_signed_20240103121502.pdf
20230626_EdcPgw_4322053252_0001131023000005_ETAX_signed_20240103121503.pdf
20230626_EdcPgw_ETAX-PWD_signed_20240103121521.PWD
重命名后:
20230626_EdcPgw_0012041844_0001131023000001_ETAX.pdf
20230626_EdcPgw_0531072999_0001131023000003_ETAX.pdf
20230626_EdcPgw_4322053252_0001131023000005_ETAX.pdf
20230626_EdcPgw_ETAX-PWD.PWD
完全符合你的需求。
内容的提问来源于stack exchange,提问作者iChinJO
相关产品推荐
相关产品推荐

