【发布时间】:2016-01-12 00:44:00
【问题描述】:
我正在尝试使用 Java NIO Files.move 方法来移动目录。它确实将目录内容复制到新位置,但它保留了旧目录。我认为这是一个复制操作,而不是移动操作。
任何想法为什么会发生这种情况?这是我的代码:
Path source = FileSystems.getDefault().getPath("C:\\test-source");
Path destination = FileSystems.getDefault().getPath("C:\\test-destination");
try {
System.out.println("Moving files ...");
Files.move(source, destination, StandardCopyOption.ATOMIC_MOVE);
System.out.println("Done.");
} catch (IOException e) {
System.out.println("Moving failed: " + e.toString());
}
同样,目标目录及其所有内容都会出现,但源文件夹仍然存在。
【问题讨论】:
-
试试 StandardCopyOption.REPLACE_EXISTING 吗?你试过了吗?
-
C:\test-source应该是C:\\test-source -
当您说“它保留旧目录”时,您的意思是它将文件保留在旧目录中吗?还是只是目录本身?
-
@Klitos Kyricou 保留源目录和文件。
-
我认为它应该可以工作,ATOMIC_MOVE 确实是你想要的。如果您的实际源目录和目标目录位于不同的驱动器上,或者目标目录不存在,或者目标文件已经存在,则它将不起作用。