IO緩衝流

IO緩衝流

緩衝流也叫高效流,可以更高效的進行讀取;
轉換流:可以進行編碼轉換
序列化流:持久化存儲對象git

緩衝流

緩衝流--就是對應4個File**** 流的加強流
字節緩衝流:BufferedInputStream,BufferedOutputStream
字符緩衝流:BufferedReader,BufferedWritergithub

基本原理

緩衝流在建立流對象時,會建立一個內置的默認大小的緩衝區數組,經過緩衝區的讀寫,減小系統IO次數,從而提升讀寫的效率數組

字節緩衝流

BufferedInputStream

構造方法測試

BufferedInputStream(InputStream in)
建立一個 BufferedInputStream並保存其參數,輸入流 in ,供之後使用。
BufferedInputStream(InputStream in, int size)
建立 BufferedInputStream具備指定緩衝區大小,並保存其參數,輸入流 in ,供之後使用。編碼

BufferedInputStream 的方法code

int available()
返回從該輸入流中能夠讀取(或跳過)的字節數的估計值,而不會被下一次調用此輸入流的方法阻塞。
void close()
關閉此輸入流並釋放與流相關聯的任何系統資源。
void mark(int readlimit)
見的總承包 mark的方法 InputStream 。
boolean markSupported()
測試這個輸入流是否支持 mark和 reset方法。
int read()
見 read法 InputStream的通常合同。
int read(byte[] b, int off, int len)
從給定的偏移開始,將字節輸入流中的字節讀入指定的字節數組。
void reset()
見 reset法 InputStream的通常合同。
long skip(long n)
見 skip法 InputStream的通常合同。對象

示例:繼承

/**
     * bufferedInputStream的使用步驟
     * 1.建立bufferedInputStream對象,並在構造方法中傳入InputStream
     * 2.使用bufferedInputStream對象的read()方法讀取數據
     * 3.釋放資源
     */
    static void bufferedInputStream() {

        try (
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream("./src/JavaCore/IO/BOS.txt"), 1024)
        ) {
            int len;
            byte[] bytes = new byte[1024];
            while ((len = bis.read(bytes)) != -1) {
                System.out.println(new String(bytes, 0, len));
            }
        } catch (IOException E) {
            System.out.println(E);
        }
    }

BufferedOutputStream

構造方法ip

BufferedOutputStream(OutputStream out)建立一個新的緩衝輸出流,以將數據寫入指定的底層輸出流。
BufferedOutputStream(OutputStream out, int size)建立一個新的緩衝輸出流,以便以指定的緩衝區大小將數據寫入指定的底層輸出流。

方法:

intavailable()返回從該輸入流中能夠讀取(或跳過)的字節數的估計值,而不會被下一次調用此輸入流的方法阻塞。
voidclose()關閉此輸入流並釋放與流相關聯的任何系統資源。
voidmark(int readlimit)見的總承包 mark的方法 InputStream 。
booleanmarkSupported()測試這個輸入流是否支持 mark和 reset方法。
intread()見 read法 InputStream的通常合同。
intread(byte[] b, int off, int len)從給定的偏移開始,將字節輸入流中的字節讀入指定的字節數組。

示例:

/**
     * bufferedOutputStream的使用步驟
     * 1.建立bufferedOutputStream對象,並在構造方法中傳入OutputStream
     * 2.使用bufferedOutputStream的write()方法將數據寫入緩衝區
     * 3.flush()將緩衝區的數據刷入文件
     * 4.關閉流
     */
    static void bufferedOutputStream() {
        //這裏使用的JDK7的新特性,在try中new 流對象,使用完後自動關閉
        try (
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("./src/JavaCore/IO/BOS.txt"), 1024)
        ) {
            bos.write("這是一個昂揚的時代,同時充滿了悲傷的故事".getBytes());
        } catch (IOException e) {
            System.out.println(e);
        }
    }

字符緩衝流

buffredReader

buffredReader--繼承關係java.lang.Objec<-java.io.Write<-rjava.io.BufferedWriter

構造方法:

BufferedWriter(Writer out)建立使用默認大小的輸出緩衝區的緩衝字符輸出流。
BufferedWriter(Writer out, int sz)建立一個新的緩衝字符輸出流,使用給定大小的輸出緩衝區。

因此buffredReader的使用和Writer的方法基本一致,但buffredReader是須要傳入一個writer對象,同時在buffredReader的方法中有一個新方法就是:

public void newLine()
         throws IOException寫一行行分隔符。 行分隔符字符串由系統屬性line.separator定義,並不必定是單個換行符('\ n')字符。

newLine()直接調用系統的line.separator定義。

bufferedReader

bufferedReader--繼承關係:
java.lang.Object<-java.io.Reader<-java.io.BufferedReader

構造方法:

BufferedReader(Reader in)建立使用默認大小的輸入緩衝區的緩衝字符輸入流。
BufferedReader(Reader in, int sz)建立使用指定大小的輸入緩衝區的緩衝字符輸入流。

bufferedReader構造方法中傳入Reader對象,而後方法使用也基本和reader一致,但有一個獨有方法:

public String readLine() throws IOException
讀一行文字。 一行被視爲由換行符(' n'),回車符(' r')中的任何一個或隨後的換行符終止。
返回所讀取行的內容,若是已經到達流的末尾則爲null

本博客爲Swagger-Ranger的筆記分享,文章會持續更新 文中源碼地址: https://github.com/Swagger-Ranger 歡迎交流指正,若有侵權請聯繫做者確認刪除: liufei32@outlook.com

相關文章
相關標籤/搜索