对文件进行批量重命名
对下载的文件名不太满意,抽取了公共的字符串进行删除后重命名
package com.javaSe.Demo;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* 对一个文件夹里的文件进行批量改名。通用的话需要再定制
*
* @Name RenameFiles
* @Author xiaoLi
* @Date 2023/8/17 星期四 9:18
*/
public class RenameFiles {
public static void main(String[] args) {
String folder = "D:\\软件大全\\java资料\\JUC并发编程黑马版";
int index = 31;
String delName = "黑马程序员深入学习Java并发编程,JUC并发编程全套教程 - ";
String path = "D:\\软件大全\\java资料\\JUC2\\";
// 运行测试一下
renameAllFile(folder, index, delName, path);
}
/**
* @param folder 要扫描的文件夹,将会对这个文件夹下的所有文件进行改名
* @param index 从哪个下标开始截取,该下标前面的字符都会被删除
* @param delName 要删除的字串,判断是否有此子串
* @param path 新的路径,后面需要自己拼上新的文件名
*/
private static void renameAllFile(String folder, int index, String delName, String path) {
File dir = new File(folder);
List<File> allFileList = new ArrayList<>();
// 判断文件夹是否存在
if (!dir.exists()) {
System.out.println("目录不存在");
return;
}
// 将获取到的文件添加到列表里
getAllFile(dir, allFileList);
for (File file : allFileList) {
String fileName = file.getName();
if (fileName.length() < index) {
throw new RuntimeException("文件名长度不足" + index + "位");
}
if (fileName.contains(delName)) {
// 截取前32个字符串
String newName = fileName.substring(index, fileName.length());
File file1 = new File(path + newName);
boolean result = file.renameTo(file1);
System.out.println(result + "-----" + file1.getName());
}
}
}
/**
* 获取一个文件夹下的所有文件
*
* @param fileInput
* @param allFileList
*/
public static void getAllFile(File fileInput, List<File> allFileList) {
// 获取文件列表
File[] fileList = fileInput.listFiles();
assert fileList != null;
for (File file : fileList) {
if (file.isDirectory()) {
// 递归处理文件夹
// 如果不想统计子文件夹则可以将下一行注释掉
getAllFile(file, allFileList);
} else {
// 如果是文件则将其加入到文件数组中
allFileList.add(file);
}
}
}
}
本文来自博客园,作者:xiaolifc,转载请注明原文链接:https://www.cnblogs.com/xiaolibiji/p/17641030.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步