下面是我的文件夹结构,我想以递归方式将所有文件夹名称从“abc”重命名为“test”。 我希望递归地将文件名“abcv1.txt”更改为“testV1.txt”,其中V1是常量。我在我的代码中尝试了renameTo()但它不适用于目录。我没有编写代码来更改文件名。任何建议都会有帮助
Folder1
--abc
--xyz
--a.txt
Folder2
--def
--ghi
--abc
--abc
--abcV1.txt
public static void RenameFiles (File dir){
String regexe = "abc";
String replacement = "test";
// Allocate a Pattern object to compile a regexe
Pattern pattern = Pattern.compile(regexe, Pattern.CASE_INSENSITIVE);
Matcher matcher;
// directory to be processed
int count = 0;
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
File parentDir = file.getParentFile(); // to get the parent dir
String parentDirName = file.getParentFile().getName(); // to get the parent dir name
// get filename, exclude path
matcher = pattern.matcher(parentDirName); // allocate Matches with input
if (matcher.find()) {
++count;
String outFilename = matcher.replaceAll(replacement);
System.out.print(parentDirName + " -> " + outFilename);
if (file.renameTo(new File(dir.getParent()+ "\\" + outFilename))) { // execute rename
System.out.println(" SUCCESS");
} else {
System.out.println(" FAIL");
}
} else {
// System.out.println("file:" + file.getCanonicalPath() +"\n"
// System.out.println(file.getName()+"\n");
// String path = file.getCanonicalPath();
String filename = file.getName();
}
RenameFiles(file);
}
}
答案 0 :(得分:0)
我建议在递归入口之前检查项目。 您可以在此代码中进行一些更改,以分离和操作“文件和文件夹”。 因为你使用' if语句'当文件只是目录时。 所以它可能无法在文件条件下工作。