您可以使用copy(Path, Path, CopyOption...)
方法复制文件或目录 。如果目标文件存在,则复制失败,除非指定了REPLACE_EXISTING
选项。
目录可以复制。但是,目录内的文件不会被复制,因此即使原始目录包含文件,新目录也为空。
复制符号链接时,将复制链接的目标。如果要复制链接本身而不是复制链接的内容,请指定NOFOLLOW_LINKS
或REPLACE_EXISTING
选项。
此方法采用varargs参数。支持以下StandardCopyOption
和LinkOption
枚举:
REPLACE_EXISTING
–即使目标文件已经存在,也执行复制。如果目标是符号链接,则会复制链接本身(而不是链接的目标)。如果目标是非空目录,则复制将失败,并带有FileAlreadyExistsException
异常。COPY_ATTRIBUTES
–将与文件关联的文件属性复制到目标文件。支持的确切文件属性取决于文件系统和平台,但last-modified-time
跨平台受支持,并被复制到目标文件。NOFOLLOW_LINKS
–表示不应遵循符号链接。如果要复制的文件是符号链接,则复制该链接(而不是链接的目标)。
如果您不熟悉enums
,请参见 枚举类型。
下面显示了如何使用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
方法来支持递归副本。有关更多信息,请参见 遍历文件树。