不知道初學Java的同學有沒有這種感覺,就是當利用Java操作IO是總覺得戰戰兢兢的,總感覺哪裡不妥,特玻璃心,擔心崩潰。反正小編我在2003年第一次接觸Java的時候就是這個感覺。但實際上java還是非常給力和魯棒的,Java發展了這麼長時間,一直長盛不衰也不是沒道理的,今天我就把項目中碰到的一個小小問題展開一下,看看Java怎麼拷貝效率最高。
實驗環境:
1、 一個8GB的大文件
2、從E盤拷貝到D盤
直接操作系統拷貝粘貼耗時大約37秒左右(不是特別穩定,最慢的時候42秒,最快的時候32秒,我們就取個平均值)。
利用Java拷貝文件的方法主流就三種:
一、經典文件流拷貝
經典的文件拷貝方法,代碼也不復雜,如下圖所示:
二、利用Files.copy
這種方法最簡單,就一句代碼的事:
Files.copy(source, target);
三、利用NIO的Channel通道傳輸
三種方法實現都不麻煩,但是效率差別卻挺大:
直接說結論:
方法一耗時82.887秒,方法二耗時64.168秒,方法三耗時42.077秒
高下立判,所以推薦使用方法三進行文件拷貝操作,基本上與直接在操作系統操作時間相差無幾。
閱讀更多 一分鐘祕籍 的文章