使用Java实现文件复制

尽管Java提供了java.io.File类,可以处理一些文件操作,但是没有复制文件的方法。
但你的程序需要操作文件的相关信息时,复制的操作是挺重要的。这里提供了几种复制文件的方法。

  • 使用FileStreams
    这是最普遍的复制文件内容到另外一个文件的方法,它使用FileInputStream读取文件A,并使用FileOutputStream写入到文件B。
    代码如下:

此代码在比较大的文件上执行了多次的读、写操作,它的性能会比以下的方法差一些。

  • 使用java.nio.channels.FileChannel
    Java NIO 包含了一个 transferFrom 方法,依照文档可以看出,它可以比 FileStreams 执行更快的复制操作。
    代码如下:

  • 使用Apache Commons IO
    Apache Commons IO 的 FileUtils 类提供了一个 copyFile(File srcFile, File destFile) 方法,可以复制一个文件到另外一个文件。当你的项目里面包含了Apache Commons FileUtils ,使用起来将非常方便。基本上,这个方法的内部也是使用了 Java NIO FileChannel 。
    下面是第三种方法

  • 在java 7上使用Files类

测试

这里使用一个200多M的文件,使用上面4种方法

结果如下:

As you can see FileChannels is the best way to copy large files. If you work with even larger files you will notice a much bigger speed difference.

使用FileChannels的方法最快,当需要复制更大文件的时候,这4种方法的时间差会更明显

发表评论

电子邮件地址不会被公开。 必填项已用*标注