9

我正在自动化一系列我们经常做的动作,以争取一些时间。这涉及移动文件并开始一些批处理。

在这种特殊情况下,我试图将文件从一个位置复制到另一个位置。一切正常,直到我尝试使用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只是不支持?

4

2 回答 2

25

正如 API所说ATOMIC_MOVE不支持copy(),但move()仅支持。

于 2013-07-03T10:54:31.493 回答
5

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

另一方面,您可以使用Files.createLink(). 也有,createSymbolicLink()但这可能不是你想要的。

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

于 2013-07-03T11:07:16.487 回答