Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
你可以使用 copy(Path, Path, CopyOption...)
方法复制文件或目录。如果目标文件存在,则复制将失败,除非指定了 REPLACE_EXISTING
选项。
目录可以复制。但是,目录中的文件不会被复制,因此即使原始目录包含文件,新目录也是空的。
复制符号链接时,将复制链接的目标。如果要复制链接本身而不是链接的内容,请指定 NOFOLLOW_LINKS
或 REPLACE_EXISTING
选项。
此方法采用 varargs 参数。支持以下 StandardCopyOption
和 LinkOption
枚举:
REPLACE_EXISTING
- 即使目标文件已存在,也会执行复制。如果目标是符号链接,则复制链接本身(而不是链接的目标)。如果目标是非空目录,则复制将失败,并显示 FileAlreadyExistsException
异常。COPY_ATTRIBUTES
- 将与文件关联的文件属性复制到目标文件。支持的确切文件属性是文件系统和平台相关的,但跨平台支持 last-modified-time
并复制到目标文件。NOFOLLOW_LINKS
- 表示不应遵循符号链接。如果要复制的文件是符号链接,则复制链接(而不是链接的目标)。如果你不熟悉 enums
,请参阅 Enum Types。
以下显示如何使用 copy
方法:
import static java.nio.file.StandardCopyOption.*; ... Files.copy(source, target, REPLACE_EXISTING);
除文件复制外,Files
类还定义了可用于在文件和流之间进行复制的方法。copy(InputStream, Path, CopyOptions...)
方法可用于将输入流中的所有字节复制到文件。copy(Path, OutputStream)
方法可用于将所有字节从文件复制到输出流。
示例使用 Copy
copy
和 Files.walkFileTree
方法来支持递归复制。有关详细信息,请参阅 Walking the File Tree。