此Java教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用已不再可用的技术。
请参阅Java语言变更了解Java SE 9及其后续版本中的更新语言功能的摘要。
请参阅JDK发行说明了解所有JDK版本的新功能、增强功能和已删除或弃用选项的信息。
您可以使用move(Path, Path, CopyOption...)
方法来移动文件或目录。如果目标文件存在,则移动操作将失败,除非指定了REPLACE_EXISTING
选项。
空目录可以被移动。如果目录不为空,则只有在移动目录时不需要移动该目录的内容时才允许移动。在UNIX系统上,在同一分区内移动目录通常只涉及重命名目录。在这种情况下,即使目录包含文件,该方法也可以正常工作。
该方法接受一个可变参数 - 支持以下StandardCopyOption
枚举值:
REPLACE_EXISTING
- 即使目标文件已经存在,仍执行移动操作。如果目标是一个符号链接,则替换符号链接,但其指向的内容不受影响。ATOMIC_MOVE
- 将移动操作作为一个原子文件操作执行。如果文件系统不支持原子移动操作,则抛出异常。使用ATOMIC_MOVE
,您可以将文件移动到目录中,并确保任何监视该目录的进程访问完整的文件。以下是使用move
方法的示例:
import static java.nio.file.StandardCopyOption.*; ... Files.move(source, target, REPLACE_EXISTING);
尽管可以像上面示例中所示,在单个目录上实现move
方法,但该方法通常与文件树递归机制一起使用。有关更多信息,请参阅遍历文件树。