ATOMIC_MOVE给出了例外

时间:2013-07-03 10:49:56

标签: java file nio

我正在自动执行一系列操作,我们为了获得一些时间而做了很多。这涉及移动文件并开始一些批次。

在这种特殊情况下,我正在尝试将文件从一个位置复制到另一个位置。一切正常,直到我尝试使用ATOMIC_MOVE复制选项。这是我的代码:

private void copyToDropFolder(Datafile datafile, String company) throws IOException{
    Path datafilePath = datafile.getDataPath();  
    String dropFolder = locations.getLocationFor("default");
    Path dropPath = Paths.get(dropFolder, company.toUpperCase(),locations.getLocationFor("drop"), datafile.getFileName());
    Files.copy(datafilePath, dropPath, StandardCopyOption.ATOMIC_MOVE);
}

我已经检查并解决了datafilePath和dropPath的位置,它们都是有效的。我尝试过其他2个标准复制选项,程序运行正常。只有ATOMIC_MOVE才能得到UnsupportedOperationException。并不是我绝对需要这个特定的选择,但我很好奇为什么我不会工作。我真的找不到关于这个问题的任何其他报道。我在Windows 7机器上这样做。

我错过了什么吗?或者ATOMIC_MOVE是否不受支持?

2 个答案:

答案 0 :(得分:15)

作为API saysATOMIC_MOVE不支持copy()move()仅支持{{1}}。

答案 1 :(得分:2)

ATOMIC_MOVE用于移动操作,而不是复制操作。

另一方面,您可以使用Files.createLink()创建所谓的“硬链接”。还有createSymbolicLink(),但这可能不是你想要的。

当然,.createLink()仅在源和目标路径位于同一文件系统上时才有效。