Java批量修改文件目录名称(树行结构、批量重命名)
1.读取某个路径的文件目录结构
2.递归批量修改目录文件前缀进行递增
3.结果截图
4.代码
package com.zfi.server.device;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class FileTest {
public static void main(String[] args) {
// 定义output目录路径
String outputDirPath = "F://temp//output";
// 获取output目录
File outputDir = new File(outputDirPath);
// 检查output目录是否存在
if (outputDir.exists() && outputDir.isDirectory()) {
// 开始递归遍历目录
renameFilesAndDirectories(outputDir);
} else {
System.out.println("output目录不存在或不是一个目录。");
}
}
// 递归遍历目录并重命名文件和目录
private static void renameFilesAndDirectories(File directory) {
// 获取目录下的所有文件和目录
File[] filesAndDirs = directory.listFiles();
// 对文件数组进行排序
Arrays.sort(filesAndDirs, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
// 比较文件名并按字母顺序排序
return file1.getName().compareTo(file2.getName());
}
});
int count = 1;
// 遍历目录下的所有文件和目录
for (File fileOrDir : filesAndDirs) {
// 获取文件或目录的名称
String name = fileOrDir.getName();
// 检查是目录还是文件
if (fileOrDir.isDirectory()) {
// 如果是目录,则递归遍历子目录
renameFilesAndDirectories(fileOrDir);
// 修改目录名
String newName = count + "_" + name;
// 构建新的目录路径
String newPath = directory.getAbsolutePath() + File.separator + newName;
// 创建新的目录对象
File newDir = new File(newPath);
// 重命名目录
if (fileOrDir.renameTo(newDir)) {
System.out.println("成功重命名目录:" + name + " -> " + newName);
} else {
System.out.println("重命名目录失败:" + name);
}
} else {
// 修改文件名
String newName = count + "_" + name;
// 构建新的文件路径
String newPath = directory.getAbsolutePath() + File.separator + newName;
// 创建新的文件对象
File newFile = new File(newPath);
// 重命名文件
if (fileOrDir.renameTo(newFile)) {
System.out.println("成功重命名文件:" + name + " -> " + newName);
} else {
System.out.println("重命名文件失败:" + name);
}
}
count++;
}
}
}