这仅是一个概念性问题。我正在将Files.move()
与StandardCopyOption.ATOMIC_MOVE
选项一起使用。我以为这样会更安全,但事实证明,当抛出AccessDeniedException时,文件仍会删除。
任何变通或解释都值得赞赏。
代码非常简单:
Files.move(netDirJobs.toPath(), archiveJobs.toPath(),StandardCopyOption.ATOMIC_MOVE);
操作系统:win7 Professional SP1
@MarkJeronimus:
netDirLog.toPath().getFileSystem().provider() = sun.nio.fs.WindowsFileSystemProvider@5dac9e07
archiveLog.toPath().getFileSystem().provider() = sun.nio.fs.WindowsFileSystemProvider@5dac9e07
跳跃同一对象
答案 0 :(得分:0)
嘿,谢谢你们的努力。
首先,一些其他信息: 我将数据移动了两次,第一次是从源到临时,然后是最终目的地。
该错误消息使我误以为这是Files.move()的问题。但是真正发生的是,它正确地将文件移动到了临时目录,然后由于只是临时目录而被删除。我删除了临时目录的退出时删除命令,现在,如果从临时目录到目标的移动失败,它仍会按我的意愿保存在临时目录中。
对不起不必要的问题。
特别感谢Mark Jeronimus即使过去4天也对它进行了调查。