File的renameTo方法仅在目录为空时有效。除了建立新目录并将旧目录的内容复制到其中之外,使它工作最简单的方法是什么?
File的renameTo方法仅在目录为空时有效。
那是不对的。
证明
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();
Run Code Online (Sandbox Code Playgroud)
输出(在Windows上运行)
[.classpath, .project, .settings, lib, pom.xml, src, target, y]
[file.txt]
Run Code Online (Sandbox Code Playgroud)
可以看出,该文件夹x已重命名为y,即使其中包含一个命名的文件file.txt。
更新
但是,您应该使用较新的版本Files.move(Paths.get("x"), Paths.get("y"))而不是new File("x").renameTo(new File("y"))。
与renameTo只会false在失败时返回的Files.move方法不同,该方法将引发异常以说明失败原因。
由于您甚至可能甚至没有检查的返回值renameTo(就像上面的代码一样),因此新方法有助于防止对失败进行静默忽略。
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |