使用java递归重命名文件夹名称

时间:2018-05-31 04:18:07

标签: java

下面是我的文件夹结构,我想以递归方式将所有文件夹名称从“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);
            }


    }

1 个答案:

答案 0 :(得分:0)

我建议在递归入口之前检查项目。 您可以在此代码中进行一些更改,以分离和操作“文件和文件夹”。 因为你使用' if语句'当文件只是目录时。 所以它可能无法在文件条件下工作。

  • 从手机写 -