前言
比如你要更改一个文件夹目录以及子目录的名字,你会如何的更改???
一、手动更改
手动更改,确实是一个最简单的。
如果总共有两级目录,手动更改,确实很快。
但是,也有例外的情况。
二、使用程序
都是一个成熟的程序员了,如何优雅的更改是我们要考虑的问题。
1.看结果
先看演示结果
我们目录是三级目录。
可以看到已经修改成功
2.上代码
代码如下(示例):
import java.io.File;
public class FolderNameReplacer {
public static void main(String[] args) {
// 文件路径
String folderPath = "F:\\aa-bb-cc";
// 要替换的文件夹名字
String oldString = "aa";
// 替换成 新的文件夹名字
String newString = "dd";
// 重命名父文件夹及其所有子文件夹
renameFolderAndSubfolders(folderPath, oldString, newString);
}
public static void renameFolderAndSubfolders(String folderPath, String oldString, String newString) {
File folder = new File(folderPath);
// 获取 以前的文件夹名字
String oldFolderName = folder.getName();
// 替换新的 文件夹名
String newFolderName = oldFolderName.replace(oldString, newString);
// 新的路径
String newPath = folderPath;
// 老的 文件夹名字 不等于 新的文件夹名字
if (!oldFolderName.equals(newFolderName)) {
File newFolder = new File(folder.getParent() + File.separator + newFolderName);
if (folder.renameTo(newFolder)) {
System.out.println("文件夹已重命名:" + oldFolderName + " -> " + newFolderName);
newPath = newFolder.getPath();
} else {
System.err.println("无法重命名文件夹:" + oldFolderName + " -> " + newFolderName);
}
}
// 遍历子目录
// File file1 = new File(newPath);
// File[] listFiles = file1.listFiles();
File[] listOfFiles = new File(newPath).listFiles();
if (listOfFiles != null) {
for (File file : listOfFiles) {
if (file.isDirectory()) {
// 递归处理子文件夹
renameFolderAndSubfolders(file.getPath(), oldString, newString);
}
}
}
}
}
总结
这个只能算一个小的工具类吧,算不上什么程序,可能有些bug,或者说是不能用于所有的场景中。
如果帮助到你了,点个赞吧。