java使用緩沖流復(fù)制文件的方法
本文實(shí)例為大家分享了java使用緩沖流復(fù)制文件的具體代碼,供大家參考,具體內(nèi)容如下
[1] 程序設(shè)計(jì)
/*-------------------------------
1.緩沖流是一種處理流,用來加快節(jié)點(diǎn)流對(duì)文件操作的速度
2.BufferedInputStream:輸入緩沖流
3.BufferedOutputStream:輸出緩沖流
4.在正常的Java開發(fā)中都使用緩沖流來處理文件,因?yàn)檫@樣可以提高文件處理的效率
5.這里設(shè)計(jì)程序:使用緩沖流復(fù)制一個(gè)較大的視頻文件
--------------------------------*/
package pack04;
import java.io.*;
public class CopyFile {
public static void main(String[] args) {
String src = "d:/TEST/加勒比海盜-黑珍珠號(hào)的詛咒.rmvb"; //源文件路徑,該文件大小為3.01GB
String dst = "d:/TEST/加勒比海盜-黑珍珠號(hào)的詛咒-Java復(fù)制.rmvb"; //目標(biāo)文件路徑
long startTime = System.currentTimeMillis(); //獲取復(fù)制前的系統(tǒng)時(shí)間
copy(src, dst);
long endTime = System.currentTimeMillis(); //獲取復(fù)制后的系統(tǒng)時(shí)間
System.out.println("spend time: " + (endTime-startTime) ); //輸出復(fù)制需要的時(shí)間,毫秒計(jì)
}
//定義一個(gè)用于復(fù)制文件的靜態(tài)方法,參數(shù)src代表源文件路徑,參數(shù)dst代表目標(biāo)文件路徑
public static void copy(String src, String dst) {
//提供需要讀入和寫入的文件
File fileIN = new File(src);
File fileOUT = new File(dst);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//創(chuàng)建相應(yīng)的節(jié)點(diǎn)流,將文件對(duì)象作為形參傳遞給節(jié)點(diǎn)流的構(gòu)造器
FileInputStream fis = new FileInputStream(fileIN);
FileOutputStream fos = new FileOutputStream(fileOUT);
//創(chuàng)建相應(yīng)的緩沖流,將節(jié)點(diǎn)流對(duì)象作為形參傳遞給緩沖流的構(gòu)造器
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
//具體的文件復(fù)制操作
byte[] b = new byte[65536]; //把從輸入文件讀取到的數(shù)據(jù)存入該數(shù)組
int len; //記錄每次讀取數(shù)據(jù)并存入數(shù)組中后的返回值,代表讀取到的字節(jié)數(shù),最大值為b.length;當(dāng)輸入文件被讀取完后返回-1
while( (len=bis.read(b)) != -1 ) {
bos.write(b, 0, len);
bos.flush();
}
} catch(IOException e) {
e.printStackTrace();
} finally {
//關(guān)閉流,遵循先開后關(guān)原則(這里只需要關(guān)閉緩沖流即可)
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
[2] 測試結(jié)果

測試結(jié)果顯示,復(fù)制3.01GB大小的文件所用的時(shí)間約為1min。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Gateway Hystrix fallback獲取異常信息的處理
這篇文章主要介紹了Spring Cloud Gateway Hystrix fallback獲取異常信息的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
mybatis-plus內(nèi)置雪花算法主鍵重復(fù)問題解決
本文主要介紹了mybatis-plus內(nèi)置雪花算法主鍵重復(fù)問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
SpringBoot整合WxJava開啟消息推送的實(shí)現(xiàn)
本文主要介紹了SpringBoot整合WxJava開啟消息推送,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
使用Spring Security OAuth2實(shí)現(xiàn)單點(diǎn)登錄
在本教程中,我們將討論如何使用Spring Security OAuth和Spring Boot實(shí)現(xiàn)SSO - 單點(diǎn)登錄。感興趣的朋友跟隨小編一起看看吧2019-06-06
java接口用戶上下文的設(shè)計(jì)與實(shí)現(xiàn)
這篇文章主要為大家介紹了接口用戶上下文的設(shè)計(jì)與實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

