JavaIO之高效檔案複製操作
阿新 • • 發佈:2019-01-23
最近工作中遇到了大量的檔案複製,使用之前的緩衝流寫檔案,倒是可以,但是效率上會有很大影響,不僅速度慢,而且佔用高,所以,網上搜索了一些方法,加上自己修改了一下,檔案操作的效率有很高的提升,用的是檔案通道對檔案進行操作,也就是通過FileChannel,通過in通道讀入,在使用out通道寫入。
下面是程式碼部分,封裝成了一個方法,接收兩個引數分別是sourceFile,targetFile 原始檔、目標檔案,直接使用方法傳入File檔案即可。
/** * 使用檔案通道的方式複製檔案 * @author Cai * @param sourceFile 原始檔 * @param targetFile 複製到的新檔案 */ public static void fileChannelCopy(File sourceFile, File targetFile) { FileInputStream fi = null; FileOutputStream fo = null; FileChannel in = null; FileChannel out = null; try { fi = new FileInputStream(sourceFile); fo = new FileOutputStream(targetFile); in = fi.getChannel();//得到對應的檔案通道 out = fo.getChannel();//得到對應的檔案通道 in.transferTo(0, in.size(), out);//連線兩個通道,並且從in通道讀取,然後寫入out通道 } catch (IOException e) { e.printStackTrace(); } finally { try { fi.close(); in.close(); fo.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } }