本文主要讲述如何通过 Java 语言实现批量多层级修改文件名。

现象描述

不知道伙伴们有没有遇到这样的问题:当你从网上下载一些资源的时候,每个文件名上都加上了一些推广信息 ⬇️

更夸张的是,当下载的资源数量较多时,通过一个一个手动修改文件名是一个费时费力的过程。

于是我便尝试通过某种应用实现批量修改多层级文件名,但是结果是不仅不尽人意,且对Mac用户并不友好,因为大多是 Win 系统兼容。

那么Mac用户,特别是M1用户如何自救?其实 Mac 也提供了修改方法,只不过无法实现多层级而已(当然软件肯定是有的,只是需要时间多找一下)

为了不荒废所学的 Java 语言便决定自行编写代码解决,何乐而不为呢 ?

具体操作

环境:

  • IntelliJ IDEA 或 Eclipse 皆可

实现思路:

① 准备需要替换的所有内容,用一个集合存放(如【海量资源:www.abcdefg.com】)

private static List<String> blackLists = new ArrayList<>();
static {//要替换的所有内容(可添加多个)blackLists.add("【海量资源:www.abcdefg.com】");
}

② 用一个方法实现将所有层级下的文件存入一个集合(用于后期遍历修改文件名)

/**** @param results 存储所有文件(每个层级下的)* @param file 要修改文件名的最外层目录所创建的 File 对象*/
public static void findChild(List<File> results, File file) {if (file.isFile()) {  //如果是一个文件results.add(file); //加入集合} else { //如果是一个文件夹//获取源文件夹下的文件或目录集合File[] files = file.listFiles();//断言数组非空assert files != null;//遍历到每一个文件或目录for (File f : files) {//只添加文件到集合findChild(results, f);}}
}

③ main方法调用findChild实现需求

public static void main(String[] args) {//要替换的目录地址(到最外层目录路径即可)String rootPath = "......";//根据路径创建对象File file = new File(rootPath);if (!file.exists()) {System.out.println("文件不存在!");return;}//用于存储所有的文件List<File> results = new ArrayList<>();findChild(results, file);//遍历存储了所有文件的 results 集合for (File f : results) {//拿到每个文件的绝对路径名String filePath = f.getAbsolutePath();//遍历需要替换的内容的集合for (int i = 0; i < blackLists.size(); i++) {//替换该文件的指定路径名filePath = filePath.replace(blackLists.get(i), "");}//用新的名字重命名指定位置的文件f.renameTo(new File(filePath));//输出被替换的原文件名System.out.println(f.getName());}
}

完整代码

import java.io.File;
import java.util.ArrayList;
import java.util.List;public class RenameFile {private static List<String> blackLists = new ArrayList<>();static {//要替换的所有内容(可添加多个)blackLists.add("【海量资源:www.abcdefg.com】");}public static void main(String[] args) {//要替换的目录地址(到最外层目录路径即可)String rootPath = "......";//根据路径创建对象File file = new File(rootPath);if (!file.exists()) {System.out.println("文件不存在!");return;}//用于存储所有的文件List<File> results = new ArrayList<>();findChild(results, file);//遍历存储了所有文件的 results 集合for (File f : results) {//拿到每个文件的绝对路径名String filePath = f.getAbsolutePath();//遍历需要替换的内容的集合for (int i = 0; i < blackLists.size(); i++) {//替换该文件的指定路径名filePath = filePath.replace(blackLists.get(i), "");}//用新的名字重命名指定位置的文件f.renameTo(new File(filePath));//输出被替换的原文件名System.out.println(f.getName());}}/**** @param results 存储所有文件(每个层级下的)* @param file 要修改文件名的最外层目录所创建的 File 对象*/public static void findChild(List<File> results, File file) {if (file.isFile()) {  //如果是一个文件results.add(file); //加入集合} else { //如果是一个文件夹//获取源文件夹下的文件或目录集合File[] files = file.listFiles();//断言数组非空assert files != null;//遍历到每一个文件或目录for (File f : files) {//只添加文件到集合findChild(results, f);}}}
}

Java实现批量修改文件名相关推荐

  1. Java实现批量修改文件名,重命名

    平时下载的文件.视频很多都会有网址前缀,比如一些编程的教学视频,被人共享出来后,所有视频都加上一串长长的网址,看到就烦,所以一般会重命名后看,舒服很多,好了,不多说,直接上代码: 以下代码演示使用递归 ...

  2. java修改服务器文件名,批量修改文件名 java代码

    批量修改文件名 java代码 [2021-02-03 13:40:55]  简介: php实现批量修改文件名称的方法:首先使用函数[rename]实现,代码为[$path = pathinfo($cu ...

  3. 批量修改文件名(Java)

    批量修改文件名(Java) ​ 最近领导给了个任务,叫我验证一下大量的图片文件,将图片放到服务器上.图片在数据库里的路径基本全是*/.JPG, 而具体的图片文件名称有"jpg".& ...

  4. windows bat 批量修改文件名。不改变后缀

    windows bat 批量修改文件名.不改变后缀 @echo off setlocal enabledelayedexpansion for %%x in (*.java) do ( rename ...

  5. 文件批量重命名工具,批量修改文件名的实现思路

    在工作中可能会遇到文件数据成果已经制作完成后,遇到文件命名规则变更,需要对大量文件重命名,甚至修改目录结构的.本文介绍利用FME实现文件批量重命名的解决方法. 因为工作实际情况各不相同,文件重命名规则 ...

  6. 批量修改文件名SaveFileUtil

    批量修改文件名 package com.zdxf.common;/*** @Author: zj* @Date: 2023/3/21 0021 18:17* @Description:*/ impor ...

  7. python批量读取dat文件_python编写Windows环境下批量修改文件名

    在日常编程工作中我们经常需要对文件进行操作,而文件一般都是由文件名和扩展名组成的.比如我们经常需要把.dat 格式 转化成 .txt格式,把png改成jgp格式等等.这里我们就教大家如何利用PYTHO ...

  8. linux下批量修改文件名精彩解答案例分享

    ######################################################### #linux下批量修改文件名精彩解答案例分享 #date:21:34 2011-11 ...

  9. 用shell批量修改文件名

    在一个文件夹中如果文件名有固定形式,而希望实现批量修改文件名时,可以使用shell脚本 代码如下 将文件名中的a替换成b for i in *.txt; do mv $i  `echo $i | se ...

最新文章

  1. Swift学习: 从Objective-C到Swift
  2. 类的加载过程一:Loading
  3. 共享单车,信息安全应未雨绸缪
  4. 这个小姐姐真的很火辣......
  5. 报告称海归国内就业遇阻力 去年近三成海归实际年薪不足10万
  6. CUDA ---- GPU架构(Fermi、Kepler)
  7. 助成招聘网站——个人项目06
  8. hdu_3062_Party(2-SAT)
  9. ASP.NET FileUpload用法
  10. OK插件安装常见问题集锦(PowerPoint版)|OneKeyTools Lite安装说明
  11. 未来计算机的新技术有哪些,科技改变生活!人类未来的十大高科技生活
  12. 怎样在视频上加字幕,分享视频添加字幕的小技巧
  13. 安防大数据时代,IP摄像机的发展历程
  14. winedit注册码
  15. 前端HTML------负责网页结构
  16. 杭电ACM-LCY算法进阶培训班-专题训练(强连通分量)
  17. C语言文件读写(1)-文本文件读操作
  18. 【考研经验】上海交通大学自动化系考研心路分享
  19. 最新官方水晶报表实例 - 报表,应用程序
  20. .bat脚本基本命令语法

热门文章

  1. Java class located out of the source root
  2. 西瓜书笔记--第三章 线性模型
  3. 北京中医药大学远程教育 计算机基础考试,北京中医药大学远程教育计算机基础(2008版)-第4次...
  4. CleanMyMac X2022苹果电脑专业清理Mac加速器软件
  5. 如何将照片设置为手机墙纸/桌面
  6. win10 便签显示设置
  7. python机器人库(robotics-toolbox-python)的运用
  8. 计算机连接网络被限制,电脑连接wifi出现网络受限的解决方法
  9. 一个关于穿山甲广告 native 崩溃分析
  10. 计算机网络实验:路由器交换机与其基本配置操作、常见命令