Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
你可以使用 move(Path, Path, CopyOption...)
方法移动文件或目录。如果目标文件存在,则移动失败,除非指定了 REPLACE_EXISTING
选项。
可以移动空目录。如果目录不为空,则在不移动该目录内容的情况下可移动目录时允许移动。在 UNIX 系统上,移动同一分区中的目录通常由重命名目录实现。在这种情况下,即使目录包含文件,此方法也可以工作。
此方法采用 varargs 参数 - 支持以下 StandardCopyOption
枚举:
REPLACE_EXISTING
- 即使目标文件已存在,也执行移动。如果目标是符号链接,则替换符号链接,但它指向的内容不受影响。ATOMIC_MOVE
- 将移动作为原子文件操作执行。如果文件系统不支持原子移动,则抛出异常。使用 ATOMIC_MOVE
,你可以将文件移动到目录中,并保证观察目录的任何进程都可以访问完整的文件。以下显示了如何使用 move
方法:
import static java.nio.file.StandardCopyOption.*; ... Files.move(source, target, REPLACE_EXISTING);
虽然你可以在单个目录上实现 move
方法,如图所示,但该方法通常与文件树递归机制一起使用。有关更多信息,请参阅 Walking the File Tree。