我正在自动执行一系列的操作,我们为了获得一些时间而做了很多操作。这包括移动文件并开始一些批次。Java 7 ATOMIC_MOVE给出例外
在这种特殊情况下,我试图将文件从一个位置复制到另一个位置。所有工作正常,直到我尝试使用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只是不被支持?
你为什么试着'ATOMIC_MOVE'做一个_copy_操作?这根本不符合逻辑。或者你想使用'link()'? – fge
你正在尝试使用哪种文件系统类型?这可能是该操作不受支持(http://docs.oracle.com/javase/tutorial/sesential/io/move.html) –
@fge你是对的......当你以这种方式看待它时,它没有任何意义。但是在一个名为StandardCopyOption的枚举中有一个ATOMIC_MOVE选项也没什么意义:/你指出很好,我没有这样想。至于现在,我真的不想用它,我只是试了一下,它失败了。我很困惑,为什么它会失败。 – anothernoc