import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.Map;
public class CopyAndRenameDirectories {
// 数字到中文“第几次实验”格式的映射
private static final String[] chineseNumbers = {
"第一次实验", "第二次实验", "第三次实验", "第四次实验", "第五次实验",
"第六次实验", "第七次实验", "第八次实验", "第九次实验", "第十次实验"
};
public static void main(String[] args) {
// 指定目录的路径 (此处写死路径,修改为你想要的路径)
String folderPath = "D:\\personal\\Desktop\\新建文件夹\\Java版本修改目录"; // 在这里修改为你的路径
File folder = new File(folderPath);
if (!folder.exists() || !folder.isDirectory()) {
System.out.println("路径无效或不是一个目录: " + folderPath);
return;
}
// 递归遍历指定目录及子目录的文件夹并处理
processDirectories(folder);
}
// 递归遍历目录并处理文件夹
private static void processDirectories(File folder) {
File[] files = folder.listFiles();
if (files == null || files.length == 0) {
return;
}
for (File file : files) {
if (file.isDirectory()) {
// 递归处理子目录
processDirectories(file);
// 处理目录
handleDirectory(file);
}
}
}
// 处理目录的逻辑
private static void handleDirectory(File dir) {
File[] files = dir.listFiles();
if (files == null || files.length != 1) {
return; // 目录下文件夹数量不为1则跳过
}
File subDir = files[0];
//if (subDir.isDirectory()) {
// 检查子目录是否是实验目录并进行拷贝
// copyAndRenameSubdirectory(subDir, dir);
//}
if (subDir.isDirectory() && subDir.getName().equals("第一次实验")) {
// 如果子目录的名字是 "第一次实验",则进行复制操作
copyAndRenameSubdirectory(subDir, dir);
}
}
// 拷贝并重命名文件夹
private static void copyAndRenameSubdirectory(File subDir, File parentDir) {
for (int i = 0; i < chineseNumbers.length; i++) {
// 使用中文格式生成新的目录名:例如 "第一次实验", "第二次实验", ...
String newFolderName = chineseNumbers[i];
File newFolder = new File(parentDir, newFolderName);
if (newFolder.exists()) {
System.out.println("目标文件夹已存在: " + newFolder.getAbsolutePath());
continue;
}
try {
// 拷贝目录及其内容
copyDirectory(subDir, newFolder);
System.out.println("文件夹 " + subDir.getAbsolutePath() + " 已拷贝并重命名为 " + newFolder.getAbsolutePath());
} catch (IOException e) {
System.out.println("拷贝文件夹时发生错误: " + e.getMessage());
}
}
}
// 拷贝目录及其内容
private static void copyDirectory(File source, File target) throws IOException {
if (source.isDirectory()) {
if (!target.exists()) {
target.mkdir();
}
String[] files = source.list();
if (files != null) {
for (String file : files) {
File srcFile = new File(source, file);
File tgtFile = new File(target, file);
copyDirectory(srcFile, tgtFile);
}
}
} else {
Files.copy(source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
}
}