为什么在抛出AccessDeniedException时被Files.move()删除文件?

时间:2018-08-23 06:48:47

标签: java java.nio.file

这仅是一个概念性问题。我正在将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

跳跃同一对象

1 个答案:

答案 0 :(得分:0)

嘿,谢谢你们的努力。

首先,一些其他信息:  我将数据移动了两次,第一次是从源到临时,然后是最终目的地。

该错误消息使我误以为这是Files.move()的问题。但是真正发生的是,它正确地将文件移动到了临时目录,然后由于只是临时目录而被删除。我删除了临时目录的退出时删除命令,现在,如果从临时目录到目标的移动失败,它仍会按我的意愿保存在临时目录中。

对不起不必要的问题。

特别感谢Mark Jeronimus即使过去4天也对它进行了调查。