重命名具有Java内容的目录的最简单方法是什么?

时间:2019-04-02 15:17:22

标签: java

File的{​​{1}}方法仅在目录为空时有效。除了建立新目录并将旧目录的内容复制到其中之外,使其最简单的方法是什么?

1 个答案:

答案 0 :(得分:5)

  

File的{​​{1}}方法仅在目录为空时有效。

那是不正确

证明

renameTo

输出(在Windows上运行)

new File("x").mkdir();
new File("x\\file.txt").createNewFile();
new File("x").renameTo(new File("y"));
System.out.println(Arrays.toString(new File(".").list()));
System.out.println(Arrays.toString(new File("y").list()));
new File("y\\file.txt").delete();
new File("y").delete();

可以看出,文件夹[.classpath, .project, .settings, lib, pom.xml, src, target, y] [file.txt] 重命名为x,即使其中有一个名为y的文件。


更新

但是,您应该使用较新的file.txt而不是Files.move(Paths.get("x"), Paths.get("y"))

new File("x").renameTo(new File("y"))不同,renameTo在失败时仅返回false,而Files.move方法将抛出异常,解释其失败原因。

由于您甚至可能甚至没有检查renameTo的返回值(就像上面的代码一样),因此新方法有助于防止对失败进行静默忽略。