我很好奇,好像有一种定义父文件夹的方法,然后让程序循环遍历所有文件和子文件夹,并重命名文件扩展名。
我知道这可以在命令提示符下使用命令" * .ext * .newext"但是对我来说这不是一个可能的解决方案,我需要重命名嵌套在这个文件夹中的2,719个文件扩展名。
答案 0 :(得分: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();
}
这个不通过子目录,但很容易修改。
答案 1 :(得分:0)
这是一个应该为你完成工作的简单功能。对不起,如果它不是最优雅的代码 - 我的Java有点生疏。
默认情况下,它的实现是递归的;所以请注意它会影响父目录中指定类型的所有文件!
SwapFileExt 参数
path
您要解析的父目录 cExt
您要替换的扩展程序类型 nExt
所需的扩展类型 注意:cExt
和nExt
都不代表&#39; 。&#39; (例如&#34; txt&#34;,不&#34; .txt&#34;)
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);
}
}
}