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秒

高下立判,所以推薦使用方法三進行文件拷貝操作,基本上與直接在操作系統操作時間相差無幾。


分享到:


相關文章: