我正在自动执行一系列操作,我们为了获得一些时间而做了很多。这涉及移动文件并开始一些批次。
在这种特殊情况下,我正在尝试将文件从一个位置复制到另一个位置。一切正常,直到我尝试使用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
是否不受支持?
答案 0 :(得分:15)
作为API says,ATOMIC_MOVE
不支持copy()
,move()
仅支持{{1}}。
答案 1 :(得分:2)
ATOMIC_MOVE
用于移动操作,而不是复制操作。
另一方面,您可以使用Files.createLink()
创建所谓的“硬链接”。还有createSymbolicLink()
,但这可能不是你想要的。
当然,.createLink()
仅在源和目标路径位于同一文件系统上时才有效。