1. 程式人生 > >JavaIO之高效檔案複製操作

JavaIO之高效檔案複製操作

        最近工作中遇到了大量的檔案複製,使用之前的緩衝流寫檔案,倒是可以,但是效率上會有很大影響,不僅速度慢,而且佔用高,所以,網上搜索了一些方法,加上自己修改了一下,檔案操作的效率有很高的提升,用的是檔案通道對檔案進行操作,也就是通過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();

	            }

	        }

	    }