java.nio.file Files.move()正在复制而不是移动

时间:2016-01-12 00:44:00

标签: java nio

我正在尝试使用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());
}

同样,目标目录会显示其所有内容,但源文件夹仍然存在。

2 个答案:

答案 0 :(得分:1)

this

ATOMIC_MOVE是一个文件操作。

public static final StandardCopyOption ATOMIC_MOVE

将文件作为原子文件系统操作移动。

尝试StandardCopyOption.REPLACE_EXISTING

答案 1 :(得分:1)

事实证明代码是正确的。但是源文件夹未被删除,因为另一个进程仍在使用该文件夹。当我取消其他进程(AWS S3目录下载到源文件夹)时,移动就像我期望的那样发生。