自动移动和重命名Path实例



给定一个Path path实例,我有以下问题:

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

  2. 是否有可能自动地将物理文件移动到新目录并同时重命名它?

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

关于您的第一个问题,自Java 7以来,您可以使用Files#move:

Files.move(path, targetPath);

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

import static java.nio.file.StandardCopyOption.ATOMIC_MOVE;
Files.move(path, targetPath, ATOMIC_MOVE);

注意:

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

移动和重命名文件本质上是相同的操作,因此您希望使用Files.move(Path source, Path target, CopyOption... options):

将文件移动或重命名为目标文件。

在强制自动移动它方面,使用StandardCopyOption.ATOMIC_MOVE复制选项会导致以下情况:

移动作为原子文件系统操作执行,所有其他选项都是忽略了。如果目标文件存在,那么它是特定于实现的被替换,或者抛出IOException导致此方法失败。如果不能搬家作为原子文件系统操作执行,那么AtomicMoveNotSupportedException就是抛出。例如,当目标位置位于不同的位置时,可能会出现这种情况FileStore和需要复制文件,或者关联目标位置

相关内容

  • 没有找到相关文章

最新更新