我正在尝试使用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());
}
同样,目标目录会显示其所有内容,但源文件夹仍然存在。
答案 0 :(得分:1)
从 this
ATOMIC_MOVE是一个文件操作。
public static final StandardCopyOption ATOMIC_MOVE
将文件作为原子文件系统操作移动。
尝试StandardCopyOption.REPLACE_EXISTING
答案 1 :(得分:1)
事实证明代码是正确的。但是源文件夹未被删除,因为另一个进程仍在使用该文件夹。当我取消其他进程(AWS S3目录下载到源文件夹)时,移动就像我期望的那样发生。