java copy file

來源:互聯網
上載者:User

標籤:

   在Java編程中,複製檔案的方法有很多,而且經常要用到。我以前一直是緩衝輸入輸出資料流來實現的(絕大多數人都是如此),近來在研究JDK文檔時發現,用檔案通道(FileChannel)來實現檔案複製竟然比用老方法快了近三分之一。下面我就來介紹一下如何用檔案通道來實現檔案複製,以及在效率上的對比

一. 用檔案通道的方式來進行檔案複製

 /**    * 使用檔案通道的方式複製檔案    *     * @param s    *            源檔案    * @param t    *            複製到的新檔案    */    public void fileChannelCopy(File s, File t) {        FileInputStream fi = null;        FileOutputStream fo = null;        FileChannel in = null;        FileChannel out = null;        try {            fi = new FileInputStream(s);            fo = new FileOutputStream(t);            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();            }        }    }

與普通的緩衝輸入輸出資料流的複製效率的對比

普通的緩衝輸入輸出資料流代碼:

測試代碼:

輸出結果:

由此可見,FileChannel複製檔案的速度比BufferedInputStream/BufferedOutputStream複製檔案的速度快了近三分之一。在複製大檔案的時候更加體現出FileChannel的速度優勢。而且FileChannel是多並發安全執行緒的。

原文:http://jingyan.baidu.com/article/ff4116259c2d7712e4823780.html

java copy file

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.