溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java?IO流之字節(jié)輸入流如何使用

發(fā)布時(shí)間:2022-08-24 10:10:21 來源:億速云 閱讀:96 作者:iii 欄目:開發(fā)技術(shù)

這篇“Java IO流之字節(jié)輸入流如何使用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java IO流之字節(jié)輸入流如何使用”文章吧。

一、InputStream字節(jié)輸入流

①、是一個(gè)抽象類,不能夠創(chuàng)建對(duì)象,需要被繼承才能夠使用

②、在java.io包下,使用時(shí)需要導(dǎo)入

③、公共的方法:

方法一: int read()

方法二: int read(byte[] b)

方法三: void close()

更多方法請(qǐng)查看官方API

二、FileInputStream文件輸入類

①、該類繼承了InputStream,可以使用InputStream中的方法

②、能夠把硬盤文件中的數(shù)據(jù)讀取到內(nèi)存中使用

③、構(gòu)造方法

FileInputStream (String name)
FileInputStream (File file)

參數(shù)的含義:

name 是文件的路徑

file 是文件

作用:

創(chuàng)建對(duì)象

把對(duì)象指定到構(gòu)造方法中藥讀取的文件

④、使用步驟

1、創(chuàng)建FileInputStream對(duì)象,構(gòu)造方法中綁定要讀取的數(shù)據(jù)源

2、使用對(duì)象中的read方法,讀取數(shù)據(jù)

3、釋放資源

⑤、read()方法

讀取到文件末尾會(huì)返回-1(不管讀多少次)

Java?IO流之字節(jié)輸入流如何使用

⑥、補(bǔ)充:String的構(gòu)造函數(shù)

1、String (byte[] bytes)  把字節(jié)數(shù)組轉(zhuǎn)換為字符串

2、String (byte[] bytes,int offset,int length) 把字節(jié)數(shù)組的一部分轉(zhuǎn)換為字符串,從offset位置開始,取length長(zhǎng)

⑦、一次性讀取多個(gè)文件

// todo 一次性讀取多個(gè)字節(jié)
// 1、定義一個(gè)字節(jié)數(shù)組
byte[] bytes = new byte[3];
// 2、創(chuàng)建文件輸入對(duì)象
FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
// 3、讀取文件
int read = fis.read(bytes);
// 4、輸出
System.out.println(new String(bytes));

⑧、使用循環(huán)一次性讀取多個(gè)字節(jié)

// 一次性讀取多個(gè)字節(jié)
byte[] bytes1 = new byte[1024];
FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
int len = 0;
while ((len=fis.read(bytes1))!=-1){
System.out.println(new String(bytes1,0,len));

}

三、文件復(fù)制

原理:一讀一寫

目的:將A地址里面的a文件復(fù)制到B地址里面去

步驟:

1、創(chuàng)建一個(gè)字節(jié)輸入流對(duì)象,構(gòu)造方法中綁定要讀取的數(shù)據(jù)源

2、創(chuàng)建一個(gè)字節(jié)輸出流對(duì)象,構(gòu)造方法中綁定要寫入的目的地

3、使用字節(jié)輸入流對(duì)象中的方法read讀取文件

4、使用字節(jié)輸出流對(duì)象中的方法write吧讀取到的字節(jié)寫入到目的地文件中

5、釋放資源(先釋放寫的資源再釋放讀的資源,因?yàn)閷懲昃痛硪呀?jīng)讀完了)

方式一:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {
    public static void main(String[] args) {

        try {
            long s = System.currentTimeMillis();
            // 1、創(chuàng)建字節(jié)輸入流  起始地
            FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
            // 2、創(chuàng)建字節(jié)輸出流  目的地
            FileOutputStream fos = new FileOutputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\copy\\a.txt");
            // 3、讀取數(shù)據(jù)并寫入目的地
            int len = 0;
            while ((len = fis.read())!=-1){
                fos.write(len);
            }
            long e = System.currentTimeMillis();
            System.out.println("傳輸文件總共用時(shí):"+(e-s)+"毫秒");
            // 4、釋放資源
            fos.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }




    }
}

耗時(shí):2毫秒

方式二:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {
    public static void main(String[] args) {

        try {
            long s = System.currentTimeMillis();
            // 1、創(chuàng)建字節(jié)輸入流  起始地
            FileInputStream fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\a.txt");
            // 2、創(chuàng)建字節(jié)輸出流  目的地
            FileOutputStream fos = new FileOutputStream("E:\\JavaCode\\JavaSE\\Day8-23\\src\\copy\\a.txt");
            // 3、讀取數(shù)據(jù)并寫入目的地
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = fis.read(b))!=-1){
                fos.write(b,0,len);
            }
            long e = System.currentTimeMillis();
            System.out.println("傳輸文件總共用時(shí):"+(e-s)+"毫秒");
            // 4、釋放資源
            fos.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }




    }
}

兩者的區(qū)別:可以很明顯的看出來方式一和方式二的區(qū)別在于:在循環(huán)的時(shí)候判斷條件那里出現(xiàn)的不一樣,使用方式二的方式可以是文件復(fù)制更加的快捷,在初期推薦使用第二種方式進(jìn)行文件的復(fù)制

以上就是關(guān)于“Java IO流之字節(jié)輸入流如何使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI