什么';重命名包含Java内容的目录的最简单方法是什么?

什么';重命名包含Java内容的目录的最简单方法是什么?,java,Java,文件的重命名为方法仅在目录为空时有效。除了创建一个新目录并将旧目录的内容复制到其中之外,最简单的方法是什么 文件的重命名为方法仅在目录为空时有效 这是不正确的 证明 输出(在Windows上运行) 可以看到,文件夹x被重命名为y,尽管其中有一个名为file.txt的文件 更新 但是,您应该使用较新的文件.move(path.get(“x”)、path.get(“y”)而不是新文件(“x”).renameTo(新文件(“y”) 与renameTo不同,Files.move方法会抛出异常,解释失败

文件
重命名为
方法仅在目录为空时有效。除了创建一个新目录并将旧目录的内容复制到其中之外,最简单的方法是什么

文件
重命名为
方法仅在目录为空时有效

这是不正确的

证明

输出(在Windows上运行)

可以看到,文件夹
x
被重命名为
y
,尽管其中有一个名为
file.txt
的文件


更新

但是,您应该使用较新的
文件.move(path.get(“x”)、path.get(“y”)
而不是
新文件(“x”).renameTo(新文件(“y”)

renameTo
不同,
Files.move
方法会抛出异常,解释失败的原因


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

new File(“x”)。renameTo(new File(“y”)
将文件夹
x
重命名为
y
,即使其中包含文件,因此您的声明“仅当目录为空时才起作用“这是错误的。”安德烈亚斯说。当我在windows上执行此操作时,什么也没有发生。我只是在windows中执行此操作。?同样的问题,否则建议复制。我确认了这个答案。对我来说也很好@嘿你,如果这对你不起作用,那么你的系统有问题,或者你没有告诉我们发生了更多的事情。(可能他试图在文件系统之间移动一个目录……文档说这不起作用。)@StephenC,除了OP说的是“重命名”,而不是“移动”。差别很大。如果OP的意思是“移动”,OP应该用这个词。事实上,某些API对这两种API使用相同的方法是不同的(例如,如何使用“移动或重命名文件”)。这不是不同的问题。当JavaAPI或典型的OS命令实用程序都没有明确区分“重命名”和“移动”时,您希望OP使用“重命名”和“移动”之间的精确区分。不过我同意OP应该正确解释他想做什么。。。以及它不起作用的环境。
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]