以原子方式移动并重命名Path实例

ski*_*iwi 4 java file

举个Path path例子,我有以下问题:

  1. 如何重命名点的文件,如果可能的话path,不使用旧的FileAPI,我还没能在任何地方找到它?

  2. 是否有可能以原子方式将物理文件移动到新目录并同时重命名?

我正在使用Java 8,这个Path类的新东西肯定是添加的,但不确定是否有任何帮助回答这个问题.

ass*_*ias 7

关于你的第一个问题,从Java 7开始你可以使用Files#move:

Files.move(path, targetPath);
Run Code Online (Sandbox Code Playgroud)

如果您需要它是原子的,您可以使用以下ATOMIC_MOVE选项:

import static java.nio.file.StandardCopyOption.ATOMIC_MOVE;

Files.move(path, targetPath, ATOMIC_MOVE);
Run Code Online (Sandbox Code Playgroud)

注意:

  • AtomicMoveNotSupportedException如果不支持该选项,则可能会失败(例如,如果要将文件从本地硬盘驱动器移动到网络位置).
  • REPLACE_EXISTING如果使用该选项,则忽略该选项,如果目标文件存在,则在替换现有文件或通过抛出此方法失败时,它是特定于实现的IOException.