IO緩存流

為啥要緩存流?

  • 答:當需要將數據寫入磁盤時,在每一次讀寫都會訪問硬盤,這樣就會導致頻繁的IO操作,降低了程序的性能,而緩存流就是為了解決這一問題而出生的。

什么是緩存流?

  • da:就是將需要讀入或者寫入的數據,一次性的讀/寫較多到緩存流之中,之后的操作就可以從緩存流中進行數據的讀取/寫入,從而減少了IO操作。就像吃飯一樣,先把飯盛到飯碗,就不用每一口都要到電飯煲里取。

字節(jié)流與緩存流

  • 字節(jié)流是每對一個字節(jié)進行操作都要進行一次io,而緩存流在寫入數據的時候,會先把數據寫入到緩存區(qū),直到緩存區(qū)達到一定的量,才把這些數據,一起寫入到硬盤中去。

使用BufferedReader緩存流讀取數據

  • 緩存字符流BufferedReader可以一次性讀取一行數據。
package twodoge;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public static void main(String args[]){
    File f = new File('D:twodoge.txt');
    //創(chuàng)建文字字符流
    //緩存流必須建立在一個基礎流上
    try(
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);
    )
    {
        while(True){
            String line = br.readLine();
            if(line == null)
                break;
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

使用PringWriter緩存流寫出數據

  • PrintWriter 緩存字符輸出流, 可以一次寫出一行數據
package twodoge;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

public class myPrintWriter {
    public static viod main(String args[]) {

        File f = new File("D://twodoge.txt");
        try (
            FileWriter fw = new FileWriter(f);
            PrintWriter pw = new PrintWriter(fw);
        )
        {
            pw.printWriter("test1");
            pw.printWriter("test2");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

flush

  • 有時候需要需要立即把數據寫入到磁盤中,這時候就要用flush。
package twodoge;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

public class myPrintWriter {
    public static viod main(String args[]) {

        File f = new File("D://twodoge.txt");
        try (
            FileWriter fw = new FileWriter(f);
            PrintWriter pw = new PrintWriter(fw);
        )
        {
            pw.println("test1");
            fw.flush();
            pw.println("test2");
            fw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容