java代码,重命名所有文件夹文件含递归文件夹文件,重命名不能重复
时间: 2024-10-09 13:01:49 浏览: 35
Java遍历文件夹下所有文件并重新命名
在Java中,你可以使用`java.io.File`类和递归方法来遍历并重命名文件和文件夹。下面是一个简单的示例,展示如何按指定规则递归地重命名所有文件和目录,同时避免名称冲突:
```java
import java.io.File;
import java.io.IOException;
public class RecursiveRename {
private static final String OLD_NAME_FORMAT = "old_%04d";
private static final String NEW_NAME_FORMAT = "new_%04d";
public static void renameRecursively(File directory, int counter) {
if (directory.isFile()) {
File renamedFile = tryRenameFile(directory, counter);
if (renamedFile != null) {
System.out.println("Renamed file from " + directory.getName() + " to " + renamedFile.getName());
}
} else if (directory.isDirectory()) {
for (File child : directory.listFiles()) {
renameRecursively(child, counter++);
}
}
}
private static File tryRenameFile(File original, int counter) {
String newName = String.format(NEW_NAME_FORMAT, counter);
File newFile = new File(directoryPath(original), newName);
while (newFile.exists()) {
counter++;
newName = String.format(NEW_NAME_FORMAT, counter);
newFile = new File(directoryPath(original), newName);
}
return original.renameTo(newFile);
}
private static String directoryPath(File file) {
return file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf("/") + 1);
}
public static void main(String[] args) {
File rootDirectory = new File("path/to/your/directory"); // 替换为你要重命名的根目录路径
int counter = 0;
renameRecursively(rootDirectory, counter);
}
}
```
这个程序首先检查当前元素是文件还是目录,然后递归地处理其中的所有内容。对于每个文件,它尝试生成一个新的名字(如"new_0001"),如果该名字已存在,则增加计数器并在新名字中反映出来。如果重命名成功,程序会打印出旧名到新名的转换。
阅读全文