2.5.4 复制、移动和删除文件

将文件从一个位置复制到另一个位置可以直接调用

移动文件(即复制并删除原文件)可以调用

如果目标路径已经存在,那么复制或移动将失败。如果想要覆盖已有的目标路径,可以使用REPLACE_EXISTING选项。如果想要复制所有的文件属性,可以使用COPY_ATTRIBUTES选项。也可以像下面这样同时选择这两个选项:

你可以将移动操作定义为原子性的,这样就可以保证要么移动操作成功完成,要么源文件继续保持在原来位置。具体可以使用ATOMIC_MOVE选项来实现:

你还可以将一个输入流复制到Path中,这表示你想要将该输入流存储到硬盘上。类似地,你可以将一个Path复制到输出流中。可以使用下面的调用:

至于其他对copy的调用,可以根据需要提供相应的复制选项。

最后,删除文件可以调用:

如果要删除的文件不存在,这个方法就会抛出异常。因此,可转而使用下面的方法:

该删除方法还可以用来移除空目录。

请查阅表2-3以了解对文件操作而言可用的选项。

表2-3 用于文件操作的标准选项

java.nio.file.Files 7

·static Path copy(Path from,Path to,CopyOption...options)

·static Path move(Path from,Path to,CopyOption...options)

将from复制或移动到给定位置,并返回to。

·static long copy(InputStream from,Path to,CopyOption...options)

·static long copy(Path from,OutputStream to,CopyOption...options)

从输入流复制到文件中,或者从文件复制到输出流中,返回复制的字节数。

·static void delete(Path path)

·static boolean deleteIfExists(Path path)

删除给定文件或空目录。第一个方法在文件或目录不存在情况下抛出异常,而第二个方法在这种情况下会返回false。