最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的字節(jié)流InputStream和OutputStream詳解

 更新時間:2023年10月26日 08:53:22   作者:CodeJiao  
這篇文章主要介紹了Java中的字節(jié)流InputStream和OutputStream詳解,繼承自InputStream的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)8bit,我們看到的具體的某一些管道,凡是以InputStream結(jié)尾的管道,都是以字節(jié)的形式向我們的程序輸入數(shù)據(jù),需要的朋友可以參考下

1. InputStream(字節(jié)輸入流)

  • 我們看到的具體的某一些管道,凡是以InputStream結(jié)尾的管道,都是以字節(jié)的形式向我們的程序輸入數(shù)據(jù)。
  • 繼承自InputStream的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(Byte)=> (8bit);下圖中深色為節(jié)點(diǎn)流,淺色為處理流。

在這里插入圖片描述

InputStream的基本方法

        //讀取一個字節(jié)并以整數(shù)的形式返回(0~255)
        // 如果返回-1就說明已經(jīng)到了輸入流的末尾
        int read () throws IOException

        //讀取一系列字節(jié)并存儲到一個數(shù)組buffer
        // 返回實(shí)際讀取的字節(jié)數(shù),如果讀取前已到輸入流的末尾,則返回-1
        int read ( byte[] buffer) throws IOException

        //從offset位置開始,讀取length個字節(jié),并存儲到一個字節(jié)數(shù)組buffer,
        // 返回實(shí)際讀取的字節(jié)數(shù),如果讀取前以到輸入流的末尾返回-1.
        int read ( byte[] buffer, int offset, int length) throws IOException

        //關(guān)閉流釋放內(nèi)存資源
        void close () throws IOException

        //跳過n個字節(jié)不讀,返回實(shí)際跳過的字節(jié)數(shù)
        long skip(long n) throws IOException

read()方法是一個字節(jié)一個字節(jié)地往外讀,每讀取一個字節(jié),就處理一個字節(jié)。read(byte[] buffer)方法讀取數(shù)據(jù)時,先把讀取到的數(shù)據(jù)填滿這個byte[]類型的數(shù)組buffer(buffer是內(nèi)存里面的一塊緩沖區(qū)),然后再處理數(shù)組里面的數(shù)據(jù)。這就跟我們?nèi)∷粯?,先用一個桶去接,等桶接滿水后再處理桶里面的水。如果是每讀取一個字節(jié)就處理一個字節(jié),這樣子讀取也太累了。

【演示:使用FileInputStream流來讀取FileInputStream.java文件的內(nèi)容】

read.txt

在這里插入圖片描述

在這里插入圖片描述

Test.java

package character1;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;


public class Test {
    public static void main(String[] args) {
        // 使用變量b來裝調(diào)用read()方法時返回的整數(shù)
        int b = 0;
        /*
        使用FileInputStream流來讀取有中文的內(nèi)容時,讀出來的是亂碼,
        因?yàn)槭褂?InputStream流里面的read()方法讀取內(nèi)容時是一個字節(jié)一個字節(jié)地讀取的,
        而一個漢字是占用兩個 字節(jié)的,所以讀取出來的漢字無法正確顯示。

        使用FileReader流來讀取內(nèi)容時,中英文都可以正確顯示,
        因?yàn)镽eader流里面的 read()方法是一個字符一個字符地讀取的,
        這樣每次讀取出來的都是一個完整的漢字,這樣就可以正確 顯示了。
         */
        FileInputStream inputStream = null;
        try {
            inputStream = new FileInputStream("E:\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\read.txt");
        } catch (FileNotFoundException e) {
            System.out.println("系統(tǒng)找不到指定的文件");
            System.exit(-1);// 系統(tǒng)非正常退出
        }

        long num = 0; //  使用變量num來記錄讀取到的字符數(shù)

        // 調(diào)用read()方法時會拋異常,所以需要捕獲異常
        try {
            /*
            調(diào)用int read() throws Exception方法時,返回的是一個int類型的整數(shù)
            循環(huán)結(jié)束的條件就是返回一個值-1,表示此時已經(jīng)讀取到文件的末尾了。
             */
            while ((b = inputStream.read()) != -1) {
                // “char(b)”把使用數(shù)字(ASCII碼)英文字母轉(zhuǎn)換成字符輸入
                System.out.print((char) b);
                num++;
            }
            inputStream.close();// 關(guān)閉輸入流
            System.out.println("總共讀取了" + num + "個字節(jié)的文件");
        } catch (IOException e) {
            System.out.println("文件讀取錯誤");
            System.exit(-1);// 系統(tǒng)非正常退出
        }
    }
}

在這里插入圖片描述

2. OutputStream(輸出流)

繼承自O(shè)utputStream的流是用于程序中輸出數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(Byte)=> (8bit);下圖中深色的為節(jié)點(diǎn)流,淺色為處理流。

在這里插入圖片描述

OutputStream的基本方法:

在這里插入圖片描述

案例: 【使用FileOutputStream流往一個文件里面寫入數(shù)據(jù)】

在這里插入圖片描述

Test.java

package character1;

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


public class Test {
    public static void main(String[] args) throws IOException {
        // 使用變量b來裝調(diào)用read()方法時返回的整數(shù)
        int b = 0;
        try (FileInputStream inputStream = new FileInputStream("E:\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\read.txt");
             FileOutputStream outputStream = new FileOutputStream("\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\write.txt")) {
            while ((b = inputStream.read()) != -1) {
                outputStream.write(b);
            }
        } catch (IOException e) {
            System.out.println("讀取文件異常");
            System.exit(-1);// 系統(tǒng)非正常退出
        }
        System.out.println("文件寫入成功");
    }
}

在這里插入圖片描述

write.txt

在這里插入圖片描述

3. 小結(jié)

FileInputStream和FileOutputStream這兩個流都是字節(jié)流,都是以一個字節(jié)為單位進(jìn)行輸入和輸出的。

所以對于占用2個字節(jié)存儲空間的字符來說讀取出來時就會顯示成亂碼。

到此這篇關(guān)于Java中的字節(jié)流InputStream和OutputStream詳解的文章就介紹到這了,更多相關(guān)Java的InputStream和OutputStream內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java標(biāo)識接口的使用方法

    Java標(biāo)識接口的使用方法

    在本篇文章中小編給大家分享了關(guān)于Java標(biāo)識接口的使用方法和教程內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • IntelliJ IDEA同步代碼時版本沖突而產(chǎn)生出的incoming partial文件問題的解決辦法

    IntelliJ IDEA同步代碼時版本沖突而產(chǎn)生出的incoming partial文件問題的解決辦法

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA同步代碼時版本沖突而產(chǎn)生出的incoming partial文件問題的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java模擬實(shí)現(xiàn)斗地主發(fā)牌

    Java模擬實(shí)現(xiàn)斗地主發(fā)牌

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)模擬斗地主發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java基本事件處理機(jī)制解析

    java基本事件處理機(jī)制解析

    這篇文章主要介紹了java基本事件處理機(jī)制解析,?Java事件處理機(jī)制是一種用于處理用戶交互和系統(tǒng)事件的編程模型,它基于事件驅(qū)動的思想,通過監(jiān)聽和響應(yīng)事件來實(shí)現(xiàn)程序的交互性和動態(tài)性,需要的朋友可以參考下
    2023-10-10
  • Java中的注解詳解(Annotation)

    Java中的注解詳解(Annotation)

    文章介紹了Java中的注解,包括注解的定義、元注解、Java內(nèi)置的三大注解、自定義注解、反射注解以及注解的作用,注解是一種特殊的標(biāo)記,可以用于類、方法、字段等元素,用于提供元數(shù)據(jù)信息
    2025-03-03
  • java算法之余弦相似度計(jì)算字符串相似率

    java算法之余弦相似度計(jì)算字符串相似率

    這篇文章主要介紹了java算法之余弦相似度計(jì)算字符串相似率,對算法感興趣的同學(xué),可以參考下
    2021-05-05
  • 通過Java創(chuàng)建Socket連接到服務(wù)器方式

    通過Java創(chuàng)建Socket連接到服務(wù)器方式

    這篇文章主要介紹了通過Java創(chuàng)建Socket連接到服務(wù)器方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)

    使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)

    這篇文章主要為大家介紹了使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Springboot jar運(yùn)行時如何將jar內(nèi)的文件拷貝到文件系統(tǒng)中

    Springboot jar運(yùn)行時如何將jar內(nèi)的文件拷貝到文件系統(tǒng)中

    因?yàn)閳?zhí)行需要,需要把jar內(nèi)templates文件夾下的的文件夾及文件加壓到宿主機(jī)器的某個路徑下,以便執(zhí)行對應(yīng)的腳本文件,這篇文章主要介紹了Springboot jar運(yùn)行時如何將jar內(nèi)的文件拷貝到文件系統(tǒng)中,需要的朋友可以參考下
    2024-06-06
  • 一文看懂JAVA設(shè)計(jì)模式之工廠模式

    一文看懂JAVA設(shè)計(jì)模式之工廠模式

    本文主要介紹了JAVA中設(shè)計(jì)模式的工廠模式,文中講解非常詳細(xì),代碼幫助大家更好的學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評論

庆云县| 穆棱市| 泗水县| 墨江| 寿光市| 扶风县| 拜城县| 航空| 宜川县| 广东省| 福建省| 博兴县| 宿松县| 阆中市| 荆州市| 金华市| 泽普县| 无棣县| 西贡区| 额敏县| 庆云县| 北辰区| 永昌县| 邵阳市| 建昌县| 申扎县| 武汉市| 定兴县| 荆州市| 志丹县| 珲春市| 开阳县| 高雄市| 诸暨市| 海丰县| 东港市| 名山县| 华池县| 昌黎县| 敦化市| 天台县|