您可以使用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方法来支持递归副本。有关更多信息,请参见 遍历文件树。
