复制文件或目录

您可以使用复制(路径,路径,CopyOption ...)方法复制文件或目录。如果目标文件存在,则复制失败,除非指定了REPLACE_EXISTING选项。

目录可以被复制。但是,目录内的文件不会被复制,因此即使原始目录包含文件,新目录也为空。

复制符号链接时,将复制链接的目标。如果要复制链接本身而不是复制链接的内容,请指定NOFOLLOW_LINKSREPLACE_EXISTING选项。

此方法采用 varargs 参数。支持以下StandardCopyOptionLinkOption枚举:

  • 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类还定义了可用于在文件和流之间复制的方法。 复制(InputStream,Path,CopyOptions ...)方法可用于将所有字节从 Importing 流复制到文件。 copy(Path, OutputStream)方法可用于将所有字节从文件复制到输出流。

Copy示例使用copyFiles.walkFileTree方法来支持递归副本。有关更多信息,请参见走文件树