Java最高效的文件拷贝方法

不知道初学Java的同学有没有这种感觉,就是当利用Java操作IO是总觉得战战兢兢的,总感觉哪里不妥,特玻璃心,担心崩溃。反正小编我在2003年第一次接触Java的时候就是这个感觉。但实际上java还是非常给力和鲁棒的,Java发展了这么长时间,一直长盛不衰也不是没道理的,今天我就把项目中碰到的一个小小问题展开一下,看看Java怎么拷贝效率最高。

实验环境:

1、 一个8GB的大文件

2、从E盘拷贝到D盘

直接操作系统拷贝粘贴耗时大约37秒左右(不是特别稳定,最慢的时候42秒,最快的时候32秒,我们就取个平均值)。

利用Java拷贝文件的方法主流就三种:

一、经典文件流拷贝

经典的文件拷贝方法,代码也不复杂,如下图所示:

Java最高效的文件拷贝方法

经典文件流拷贝方法

二、利用Files.copy

这种方法最简单,就一句代码的事:

Files.copy(source, target);

三、利用NIO的Channel通道传输

Java最高效的文件拷贝方法

利用NIO的通道传输方法

三种方法实现都不麻烦,但是效率差别却挺大:

直接说结论:

方法一耗时82.887秒,方法二耗时64.168秒,方法三耗时42.077秒

高下立判,所以推荐使用方法三进行文件拷贝操作,基本上与直接在操作系统操作时间相差无几。


分享到:


相關文章: