부모 폴더를 정의한 다음 모든 파일과 하위 폴더를 통해 프로그램주기를 지정하고 파일 확장명의 이름을 바꾸는 방법이있는 것처럼 궁금합니다.상위 폴더에있는 파일의 이름을 바꾸시겠습니까?
"* .ext * .newext"명령을 사용하여 명령 프롬프트에서이 작업을 수행 할 수 있음을 알고 있지만 그 해결책은 아니므로이 폴더 안에 중첩 된 2,719 개의 파일 확장명의 이름을 바꿔야합니다.
부모 폴더를 정의한 다음 모든 파일과 하위 폴더를 통해 프로그램주기를 지정하고 파일 확장명의 이름을 바꾸는 방법이있는 것처럼 궁금합니다.상위 폴더에있는 파일의 이름을 바꾸시겠습니까?
"* .ext * .newext"명령을 사용하여 명령 프롬프트에서이 작업을 수행 할 수 있음을 알고 있지만 그 해결책은 아니므로이 폴더 안에 중첩 된 2,719 개의 파일 확장명의 이름을 바꿔야합니다.
네, 할 수 있습니다. 다음은 그 예입니다.
// 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를 통과하지는 않지만 쉽게 수정할 수 있습니다.
다음은 작업을 수행해야하는 간단한 기능입니다. 죄송합니다. 가장 우아한 코드가 아니라면 Java는 녹슨 것입니다.
기본적으로 구현시 재귀 적입니다. 따라서 상위 디렉토리에서 지정된 유형의 모든 파일 에 영향을줍니다. 당신이 원하는 상위 디렉토리가
cExt
교체 할 확장 형식을 구문 분석하는 SwapFileExt PARAMS
path
nExt
원하는 확장 유형참고 : cExt
및 nExt
은 모두 ''없이 표시해야합니다. '(예를 들어, "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);
}
}
}
예 것이 가능하다. – vanje