2014-04-17 2 views
0

부모 폴더를 정의한 다음 모든 파일과 하위 폴더를 통해 프로그램주기를 지정하고 파일 확장명의 이름을 바꾸는 방법이있는 것처럼 궁금합니다.상위 폴더에있는 파일의 이름을 바꾸시겠습니까?

"* .ext * .newext"명령을 사용하여 명령 프롬프트에서이 작업을 수행 할 수 있음을 알고 있지만 그 해결책은 아니므로이 폴더 안에 중첩 된 2,719 개의 파일 확장명의 이름을 바꿔야합니다.

+0

예 것이 가능하다. – vanje

답변

0

네, 할 수 있습니다. 다음은 그 예입니다.

// java 6 
    File parentDir = new File(".."); 
    System.out.println(parentDir.getAbsolutePath()); 
    final File[] files = parentDir.listFiles(); 
    System.out.println(Arrays.toString(files)); 

    // java 7+ 
    File parentDir = new File(".."); 
    try { 
     Files.walkFileTree(parentDir.toPath(), new SimpleFileVisitor<Path>() { 
      @Override 
      public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 
       if (file.toFile().renameTo(new File("othername.txt"))) { 
        return FileVisitResult.CONTINUE; 
       } else { 
        return FileVisitResult.TERMINATE; 
       } 
      } 
     }); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

이 항목은 subdirs를 통과하지는 않지만 쉽게 수정할 수 있습니다.

0

다음은 작업을 수행해야하는 간단한 기능입니다. 죄송합니다. 가장 우아한 코드가 아니라면 Java는 녹슨 것입니다.

기본적으로 구현시 재귀 적입니다. 따라서 상위 디렉토리에서 지정된 유형의 모든 파일 에 영향을줍니다. 당신이 원하는 상위 디렉토리가

  • cExt교체 할 확장 형식을 구문 분석하는

    SwapFileExt PARAMS

    • path
    • nExt원하는 확장 유형

    참고 : cExtnExt은 모두 ''없이 표시해야합니다. '(예를 들어, "TXT"하지 ".txt를")

    public static void SwapFileExt(String path, String cExt, String nExt) { 
        File parentDir = new File(path); 
        File[] contents = parentDir.listFiles(); 
    
        for (int i = 0; i < contents.length; i++) { 
         if (contents[i].isFile()) { 
          if (contents[i].toString().contains("." + cExt)) { 
           String item = contents[i].toString().replaceAll("." + cExt, "." + nExt); 
           contents[i].renameTo(new File(item)); 
          } 
         } else if (contents[i].isDirectory()) { 
          SwapFileExt(contents[i].toString(), cExt, nExt); 
         } 
        } 
    } 
    
  • 관련 문제