国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java IO流 - 緩沖流的詳細使用介紹

這篇具有很好參考價值的文章主要介紹了Java IO流 - 緩沖流的詳細使用介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

緩沖流

緩沖流概述

緩沖流介紹:

緩沖流也稱為高效流、或者高級流。之前學(xué)習(xí)的字節(jié)流和字符流可以稱為原始流。

作用:緩沖流自帶緩沖區(qū)、可以提高原始字節(jié)流、字符流讀寫數(shù)據(jù)的性能

字節(jié)緩沖流,JavaSE,java,jvm,算法

緩沖流分為: 字節(jié)緩存輸入流、字節(jié)緩沖輸出流、字符緩沖輸入流、字符緩沖輸出流

字節(jié)緩沖流,JavaSE,java,jvm,算法

字節(jié)緩沖流

字節(jié)緩沖輸入流:BufferedInputStream,提高字節(jié)輸入流讀取數(shù)據(jù)的性能,讀寫功能上與原始流相比并無變化。

字節(jié)緩沖輸出流:BufferedOutputStream,提高字節(jié)輸出流讀取數(shù)據(jù)的性能,讀寫功能上與原始流相比并無變化。

字節(jié)緩沖流性能優(yōu)化原理:

字節(jié)緩沖輸入流自帶了8KB緩沖池,以后我們直接從緩沖池讀取數(shù)據(jù),所以性能較好。

字節(jié)緩沖輸出流自帶了8KB緩沖池,數(shù)據(jù)就直接寫入到緩沖池中去,寫數(shù)據(jù)性能極高了。

將原始流包裝為緩沖流的構(gòu)造器如下:

構(gòu)造器 說明
BufferedInputStream(InputStream is) 可以把低級的字節(jié)輸入流包裝成一個高級的緩沖字節(jié)輸入流管道,從而提高字節(jié)輸入流讀數(shù)據(jù)的性能
BufferedOutputStream(OutputStream os) 可以把低級的字節(jié)輸出流包裝成一個高級的緩沖字節(jié)輸出流,從而提高寫數(shù)據(jù)的性能
public static void main(String[] args) throws Exception {
    // 創(chuàng)建原始字節(jié)輸入流
    InputStream is = new FileInputStream("/Users/chenyq/Documents/test.txt");
    // 創(chuàng)建原始字節(jié)輸出流
    OutputStream os = new FileOutputStream("/Users/chenyq/Documents/test1.txt");

    // 將低級的字節(jié)輸入流包裝為高級的緩存輸入流
    InputStream bis = new BufferedInputStream(is);
    // 將低級的字節(jié)輸出流包裝為高級的緩存輸出流
    OutputStream bos = new BufferedOutputStream(os);
}

讀寫功能和之前原始流的讀寫并無區(qū)別:

public static void main(String[] args) {
    try (
            // 創(chuàng)建原始字節(jié)輸入流
            InputStream is = new FileInputStream("/Users/chenyq/Documents/test.txt");
            // 創(chuàng)建原始字節(jié)輸出流
            OutputStream os = new FileOutputStream("/Users/chenyq/Documents/test1.txt");

            // 將低級的字節(jié)輸入流包裝為高級的緩存輸入流
            InputStream bis = new BufferedInputStream(is);
            // 將低級的字節(jié)輸出流包裝為高級的緩存輸出流
            OutputStream bos = new BufferedOutputStream(os);
    ) {
        // 文件拷貝: 讀寫操作
        byte[] arr = new byte[1024];
        int len;
        while ((len = bis.read(arr)) != -1) {
            bos.write(arr, 0, len);
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
}

字符緩存流

字符緩存輸入流

字符緩沖輸入流:實現(xiàn)類BufferedReader。

作用:提高字符輸入流讀取數(shù)據(jù)的性能,除此之外多了按照行讀取數(shù)據(jù)的功能。

字符緩存輸入流構(gòu)造器如下:

構(gòu)造器 說明
BufferedReader(Reader r) 可以把低級的字符輸入流包裝成一個高級的緩沖字符輸入流管道,從而提高字符輸入流讀數(shù)據(jù)的性能
public static void main(String[] args) throws Exception {
    // 創(chuàng)建原始字符輸入流
    Reader r = new FileReader("/Users/chenyq/Documents/test.txt");
    // 將原始字符輸入流包裝為字符緩存輸入流
    Reader br = new BufferedReader(r);
}

字符原始輸入流的方法字符緩存輸入流同樣適用:

public static void main(String[] args) {
    try (
            // 創(chuàng)建原始字符輸入流
            Reader r = new FileReader("/Users/chenyq/Documents/test.txt");
            // 將原始字符輸入流包裝為字符緩存輸入流
            Reader br = new BufferedReader(r);
            ){
        // 讀取文件
        char[] arr = new char[1024];
        int len;
        while ((len = br.read(arr)) != -1) {
            String res = new String(arr, 0, len);
            System.out.println(res);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

字符緩存輸入流在原有的方法上新增了方法:

方法 說明
readLine() 讀取一行數(shù)據(jù), 并返回該行內(nèi)容的字符串,無行可讀返回null

按行讀取: 普通方法

public static void main(String[] args) {
    try (
            Reader r = new FileReader("/Users/chenyq/Documents/test.txt");
            BufferedReader br = new BufferedReader(r);
            ){

        // 讀取第一行
        System.out.println(br.readLine());

    } catch (Exception e) {
        e.printStackTrace();
    }
}

按行讀取: 循環(huán)方法

public static void main(String[] args) {
    try (
            Reader r = new FileReader("/Users/chenyq/Documents/test.txt");
            BufferedReader br = new BufferedReader(r);
            ){

        String res;
        while ((res = br.readLine()) != null) {
            System.out.println(res);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

字符緩存輸出流:

字符緩沖輸出流:實現(xiàn)類BufferedWriter。

作用:提高字符輸出流寫取數(shù)據(jù)的性能,除此之外多了換行功能

字符緩存輸出流構(gòu)造器如下:

構(gòu)造器 說明
BufferedWriter(Writer w) 可以把低級的字符輸出流包裝成一個高級的緩沖字符輸出流管道,從而提高字符輸出流寫數(shù)據(jù)的性能
public static void main(String[] args) throws Exception {
    Writer w = new FileWriter("/Users/chenyq/Documents/test.txt");
    // 將原始字符輸出流包裝為緩沖輸出流
    Writer bw = new BufferedWriter(w);
}

字符緩存輸出流新增功能:

當(dāng)然原生輸輸出流的功能同樣可以使用文章來源地址http://www.zghlxwxcb.cn/news/detail-791122.html

方法 說明
newLine() 換行操作
public static void main(String[] args) {
    try (
            Writer w = new FileWriter("/Users/chenyq/Documents/test.txt", true);
            BufferedWriter bw = new BufferedWriter(w);
            ){
        // 定義一個字符數(shù)組
        char[] arr = {'我', '愛', 'C', 'h', 'i', 'n', 'a'};
        // 定義一個字符串
        String str = "我愛學(xué)習(xí)Java";

        // 寫入一個字符
        bw.write('我');
        bw.write(98);
        // 換行
        bw.newLine();

        // 寫入一個字符數(shù)組
        bw.write(arr);
        // 換行
        bw.newLine();

        // 寫入字符數(shù)組的一部分
        bw.write(arr, 1, 3);
        // 換行
        bw.newLine();

        // 寫入一個字符串
        bw.write(str);
        // 換行
        bw.newLine();

        // 寫入一個字符串的一部分
        bw.write(str, 0, 4);
        // 換行
        bw.newLine();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

到了這里,關(guān)于Java IO流 - 緩沖流的詳細使用介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java IO流的種類

    Java IO(Input/Output)是Java提供的用于讀取和寫入數(shù)據(jù)的輸入/輸出庫,它用于處理與磁盤、網(wǎng)絡(luò)、控制臺等設(shè)備的數(shù)據(jù)交換。IO按流向可以劃分為輸入流和輸出流兩類,按類型可分為字節(jié)流和字符流。 字節(jié)流用于讀取和寫入字節(jié)數(shù)據(jù)。Java提供了兩個抽象類:InputStream和OutputStr

    2024年02月05日
    瀏覽(22)
  • 【C++】文件IO流及stringstream流的使用

    【C++】文件IO流及stringstream流的使用

    我們在OJ的時候經(jīng)常會用到while(cin str),這里的流提取實際上是個阻塞操作,只要緩沖區(qū)還有數(shù)據(jù)就繼續(xù)讀,默認以空格或者換行結(jié)束,有空格說明是把兩段字符串尾插到str。 那么它是怎么結(jié)束呢? 答案是輸入 [Ctrl]-c 或者 [Ctrl]-z + 換行 。 [Ctrl]-c 是發(fā)送信號結(jié)束進程。 [Ctrl

    2023年04月27日
    瀏覽(18)
  • Java IO流 flush()的作用和緩沖流

    哪些流是緩沖流 根據(jù)Java官方文檔關(guān)于Buffered Streams的介紹,緩沖流有四種: BufferedInputStream:包裝字節(jié)輸入流 BufferedOutputStream:包裝字節(jié)輸出流 BufferedReader:包裝字符輸入流 BufferedWriter:包裝字符輸出流 這些流又被稱為包裝流/處理流,用于包裝非緩沖的流 There are four buffere

    2024年02月04日
    瀏覽(15)
  • BIO、NIO、IO多路復(fù)用模型詳細介紹&Java NIO 網(wǎng)絡(luò)編程

    BIO、NIO、IO多路復(fù)用模型詳細介紹&Java NIO 網(wǎng)絡(luò)編程

    上文介紹了網(wǎng)絡(luò)編程的基礎(chǔ)知識,并基于 Java 編寫了 BIO 的網(wǎng)絡(luò)編程。我們知道 BIO 模型是存在巨大問題的,比如 C10K 問題,其本質(zhì)就是因其阻塞原因,導(dǎo)致如果想要承受更多的請求就必須有足夠多的線程,但是足夠多的線程會帶來內(nèi)存占用問題、CPU上下文切換帶來的性能問題

    2024年02月14日
    瀏覽(30)
  • 【JavaSE】Java基礎(chǔ)語法(三十六):File & IO流

    【JavaSE】Java基礎(chǔ)語法(三十六):File & IO流

    java.io.File類是文件和目錄路徑名的抽象表示形式,主要用于文件和目錄的創(chuàng)建、查找和刪除等操作。 File:它是文件和目錄路徑名的抽象表示 文件和目錄可以通過File封裝成對象 File封裝的對象僅僅是一個路徑名。它可以是存在的,也可以是不存在的。 | 方法名 | 說明 | | —

    2024年02月07日
    瀏覽(29)
  • JavaSE進階 | 深入理解Java IO流(文件專屬流)

    JavaSE進階 | 深入理解Java IO流(文件專屬流)

    目錄 ??IO流理論概述 1.什么是IO 2.IO流的分類 3.流的四大家族 4.需要掌握的十六個流 ??字節(jié)輸入流FileInputStream 1.FileInputStream初步理解 2.FileInputStream常用方法 ??字節(jié)輸出流FileOutputStream ??任意文件拷貝 ??FileReader FileWriter 普通文件拷貝 1.字符輸入流FileReader 2.字符輸出流FileW

    2023年04月12日
    瀏覽(24)
  • 從零開始學(xué)習(xí) Java:簡單易懂的入門指南之IO緩沖流、轉(zhuǎn)換流(三十二)

    從零開始學(xué)習(xí) Java:簡單易懂的入門指南之IO緩沖流、轉(zhuǎn)換流(三十二)

    緩沖流,也叫高效流,是對4個基本的 FileXxx 流的增強,所以也是4個流,按照數(shù)據(jù)類型分類: 字節(jié)緩沖流 : BufferedInputStream , BufferedOutputStream 字符緩沖流 : BufferedReader , BufferedWriter 緩沖流的基本原理,是在創(chuàng)建流對象時,會創(chuàng)建一個內(nèi)置的默認大小的緩沖區(qū)數(shù)組,通過緩沖

    2024年02月08日
    瀏覽(106)
  • 由于對象流解析的數(shù)據(jù)與流的頭部信息不匹配導(dǎo)致異常 java.io.StreamCorruptedException: invalid stream header: 7372001

    錯誤原因 先直接說錯誤原因 當(dāng)使用對象流時,對象頭和對象內(nèi)容一起被寫入輸出流,而讀取時也需要以相同的順序讀取對象頭和對象內(nèi)容 如果讀取時的順序與寫入時的順序不一致,或者在寫入或讀取對象頭和對象內(nèi)容之間更改了流的狀態(tài),則會出現(xiàn) java.io.StreamCorruptedExcept

    2024年02月05日
    瀏覽(30)
  • 【Java高級語法】(九)IO流:肝了三天三夜,我打賭沒有比我這邊更細的探索Java I\O流的文章了~

    【Java高級語法】(九)IO流:肝了三天三夜,我打賭沒有比我這邊更細的探索Java I\O流的文章了~

    在Java中,IO(輸入輸出)操作是進行數(shù)據(jù)交互的重要方式之一。本文將詳細介紹Java中的IO流的各個方面,包括輸入流和輸出流、字節(jié)流和字符流、文件讀寫、緩沖、序列化以及常見的IO異常處理等知識點。 圖1 IO流體系結(jié)構(gòu) 按照數(shù)據(jù)流向,Java中的IO流可分為兩種類型:輸入流

    2024年02月11日
    瀏覽(21)
  • IO流的講解(4)

    目錄 轉(zhuǎn)換流 基本介紹 應(yīng)用案例1 應(yīng)用案例2 打印流 演示PrintStream (字節(jié)打印流/輸出流) 演示 PrintWriter 使用方式 Properties類 Properties基本介紹 應(yīng)用案例 本章習(xí)題 第一題 第二題 第三題 基本介紹 Java中的轉(zhuǎn)換流是用來處理字符和字節(jié)之間轉(zhuǎn)換的流。轉(zhuǎn)換流在字節(jié)輸入流和字節(jié)

    2024年02月06日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包