代码之家  ›  专栏  ›  技术社区  ›  Sharku

抛出AccessDeniedException时,为什么files.move()会删除文件?

  •  4
  • Sharku  · 技术社区  · 7 年前

    这只是一个概念问题。我在用 Files.move() StandardCopyOption.ATOMIC_MOVE 选择。我原以为这样更安全,但结果发现当抛出AccessDeniedException时,文件仍然被删除。

    任何工作或解释都是值得赞赏的。

    代码非常简单:

    Files.move(netDirJobs.toPath(), archiveJobs.toPath(),StandardCopyOption.ATOMIC_MOVE);
    

    操作系统:win7 Professional SP1

    @马克杰罗尼姆斯:

    netDirLog.toPath().getFileSystem().provider()  = sun.nio.fs.WindowsFileSystemProvider@5dac9e07
    archiveLog.toPath().getFileSystem().provider() = sun.nio.fs.WindowsFileSystemProvider@5dac9e07
    

    截取同一对象

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sharku    7 年前

    嘿,伙计们,谢谢你们的努力。

    首先是一些附加信息:

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

    对不起,有不必要的问题。

    特别感谢马克·杰罗尼莫斯在过去4天之后对它进行了调查。