IO流——字節(jié)流4種copy方式

JAVA基本IO流框架

Java常用IO流.jpg

字節(jié)流整體可分為帶緩沖區(qū)的流和不帶緩沖區(qū)的流
可分為逐字節(jié)復(fù)制的流和逐塊復(fù)制的流
(塊其實(shí)就是指byte)
常用的一共有4種復(fù)制方式!

示例:復(fù)制源文件文本數(shù)據(jù)到目標(biāo)文本中
以下列出主要的代碼

//逐字節(jié)復(fù)制

//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//調(diào)用read()方法,將文本內(nèi)容逐字節(jié)讀取到read中
int read;
while ((read = fis.read()) != -1)
    {//調(diào)用write方法逐字節(jié)輸出到目標(biāo)文件中
        fos.write(read);
    }

//關(guān)閉流
fis.close();
fos.close();
//逐塊復(fù)制

//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//定義一個(gè)能容納1024個(gè)字節(jié)的數(shù)據(jù)byte數(shù)組來(lái)接收要讀取的文本數(shù)據(jù)
byte[] bs = new byte[1024];
//定義read表示接收的字節(jié)長(zhǎng)度
int read;
//從輸入流中將最多 1024個(gè)字節(jié)的數(shù)據(jù)讀入一個(gè) byte 數(shù)組中
while ((read = fis.read(bs)) != -1)
    {//將 byte 數(shù)組中從0 開(kāi)始的 read 個(gè)字節(jié)寫(xiě)入此目標(biāo)文件中
        fos.write(bs, 0, read);
    }

//關(guān)閉流
fis.close();
fos.close();
//帶緩沖區(qū)的逐字節(jié)復(fù)制

//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//包裝流,把操作文件的流增加緩沖區(qū)的功能(直接覆蓋了文件流)
BufferedInputStream bis =  new BufferedInputStream(fis);;
BufferedOutputStream bos = new BufferedOutputStream(fos);
    
//用read逐字節(jié)接收數(shù)據(jù)  
int read;
//調(diào)用read()方法逐字節(jié)讀取數(shù)據(jù)到緩沖區(qū)中
while ((read = bis.read()) != -1)
    {//write方法將緩沖區(qū)中的數(shù)據(jù)逐字節(jié)輸出到文本文件中
        bos.write(read);
    }

//關(guān)閉流,釋放系統(tǒng)資源
bis.close();
bos.close();

//帶緩沖區(qū)的逐塊復(fù)制

//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//包裝流,把操作文件的流增加緩沖區(qū)的功能(直接覆蓋了文件流)
BufferedInputStream  bis =  new BufferedInputStream(fis);;
BufferedOutputStream  bos = new BufferedOutputStream(fos);
    

//定義一個(gè)能容納1M個(gè)字節(jié)的數(shù)據(jù)byte數(shù)組來(lái)接收要讀取的文本數(shù)據(jù)
byte[] bs = new byte[1024 * 1024];
//len表示要寫(xiě)入的字節(jié)數(shù)。 
int len = 0;
//調(diào)用read()方法逐字塊讀取byte數(shù)組到緩沖區(qū)中(每次讀1M)
while ((len = bis.read(bs, 0, 1024)) != -1)
    {//將指定 byte 數(shù)組中從0 開(kāi)始的 len 個(gè)字節(jié)寫(xiě)入此緩沖的輸出流
        bos.write(bs, 0, len);
    }

//關(guān)閉流釋放操作系統(tǒng)資源,包含flush的功能
//bos.flush()將緩沖區(qū)的數(shù)據(jù)沖入到輸出文本中,只有output需要沖出
bis.close();
bos.close();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • IO簡(jiǎn)單概述 IO解決問(wèn)題 : 解決設(shè)備與設(shè)備之間的數(shù)據(jù)傳輸問(wèn)題(硬盤(pán) -> 內(nèi)存 內(nèi)存 -> 硬盤(pán)) 讀和寫(xiě)文...
    奮斗的老王閱讀 3,457評(píng)論 0 53
  • 概述: 1、IO流:即Input Output的縮寫(xiě)。 2、特點(diǎn):1)IO流用來(lái)處理設(shè)備間的數(shù)據(jù)傳輸。2)Java...
    玉圣閱讀 1,270評(píng)論 0 3
  • 一、流的概念和作用。 流是一種有順序的,有起點(diǎn)和終點(diǎn)的字節(jié)集合,是對(duì)數(shù)據(jù)傳輸?shù)目偝苫虺橄蟆<磾?shù)據(jù)在兩設(shè)備之間的傳輸...
    布魯斯不吐絲閱讀 10,106評(píng)論 2 95
  • 這世間的大道繁多,但是真正能修成正果的又有幾個(gè),總以為在規(guī)矩中按部就班的前進(jìn)就算是追求,卻不知,這世間的道理,哪有...
    達(dá)哥嘮嗑小屋閱讀 4,279評(píng)論 6 9
  • 創(chuàng)造屬于自己的精彩。
    C_JS閱讀 240評(píng)論 0 0