java.nio.file.Files移动操作

时间:2019-01-24 13:12:29

标签: java file nio

我在程序中使用了Files.move方法,如下所述。

 public boolean moveAndRenameFile(String targetPath, String newName)
  {
    boolean fileMoved = true;
    try
    {
      Path pathToFile = FileSystems.getDefault().getPath(targetPath);
      Files.move(Paths.get(path), pathToFile.resolve(newName), StandardCopyOption.REPLACE_EXISTING);
    }
    catch (InvalidPathException | IOException e)
    {
      LOGGER.error("File couldn't be moved from {} to target location {}", path, targetPath);
      LOGGER.error(e.getMessage(), e);
      fileMoved = false;
    }
    return fileMoved;
  }

如果中间出现任何异常/错误,是否有可能将文件从原始位置删除但不移动到目标位置?

我通过以下链接,但找不到该问题的答案。 https://docs.oracle.com/javase/tutorial/essential/io/move.html

2 个答案:

答案 0 :(得分:2)

在完成该过程之前,不会删除原始(源)文件。但是,不完整/损坏的文件将保存在目标位置。


您可以自己做一点测试来确认这一点。在过程结束之前,将文件移至可移动磁盘并拔下可移动设备的电源。

答案 1 :(得分:1)

对于同一存储提供商,它使用本机移动。

否则它将执行

copyToForeignTarget(...);
Files.delete(source);

所以不会有问题。