20.4.1 为基于通道的I/O使用NIO(5)
3. 使用NIO复制文件
NIO简化了好几种类型的文件操作。尽管不可能对所有这些操作进行分析,不过可以通过一个例子提供这一思想。下面的程序调用NIO的copy()方法来复制文件,该方法是由File类定义的静态方法。Copy()方法有好几种形式,下面是我们将使用的其中一种形式: static Path copy(Path src, Path dest, CopyOption ... how) throws IOException 这种形式将src指定的文件复制到dest指定的文件。执行复制的方式是由how指定的。因为是可变长度参数,所以可以省略。如果指定how参数,那么参数值可以是下面这些值中的一个或多个,对于所有文件系统这些值都是合法的。
StandardCopyOption.COPY_ATTRIBUTES:要求复制文件的属性。
StandardCopyOption.NOFOLLOW_LINKS:不使用符号链接。
StandardCopyOption.REPLACE_EXISTING:覆盖先前存在的文件。
根据具体的实现,也可能支持其他选项。
下面的程序演示了copy()方法。源文件和目标文件都是在命令行上指定的,首先指定源文件。注意这个程序是多么简短!您可能希望将这个版本的文件复制程序与第13章中的版本进行比较。可以发现在使用NIO的版本中,实际复制文件的程序部分明显缩短了,如下所示: