1. 程式人生 > 實用技巧 >Java日誌第40天 2020.8.14

Java日誌第40天 2020.8.14

緩衝流

緩衝流的基本原理,是在建立物件時,會建立一個內建的預設大小的緩衝區陣列,通過緩衝區讀寫,減少系統IO次數,從而提高讀寫的效率。

位元組緩衝流

位元組緩衝輸出流

java.io.BufferedOutputStream extends OutputStream

繼承其父類的共性成員方法:

- public void close():關閉此輸出流並釋放與此流相關聯的任何系統資源

- public void flush():重新整理此輸出流並強制任何緩衝的輸出位元組被寫出

- public void write(byte[] b):將b.length位元組從指定的位元組陣列寫入此輸出流

- public void write(byte[] b, int off, int len):從指定的位元組陣列寫入len位元組,從偏移量off開始輸出到此輸出流

- public abstract void write(int b):將指定的位元組輸出流

構造方法:

- BufferedOutputStream(OutputStream out):建立一個新的緩衝輸出流,以將資料寫入指定的底層輸出流

- BufferedOutputStream(OutputStream out, int size):建立一個新的緩衝輸出流,以將具有指定緩衝區大小的資料寫入指定的底層輸出流

使用步驟:

1.建立FileOutputStream物件,構造方法中繫結要輸出目的地

2.建立BufferedOutputStream物件,構造方法中傳遞FileOutputStream物件,提高FileOutputStream物件效率

3.使用BufferedOutputStream物件中的方法write,把資料寫入到內部緩衝區

4.使用BufferedOutputStream物件中的方法flush,把內部緩衝區中的資料重新整理到檔案中

5.釋放資源

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import
java.io.IOException; public class Demo01BufferedOutputStream { public static void main(String[] args) throws IOException { //建立FileOutputStream物件,構造方法中繫結要輸出目的地 FileOutputStream fos = new FileOutputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\a.txt"); //建立BufferedOutputStream物件,構造方法中傳遞FileOutputStream物件,提高FileOutputStream物件效率 BufferedOutputStream bos = new BufferedOutputStream(fos); //使用BufferedOutputStream物件中的方法write,把資料寫入到內部緩衝區 bos.write("我回把資料寫入緩衝區".getBytes()); //使用BufferedOutputStream物件中的方法flush,把內部緩衝區中的資料重新整理到檔案中 bos.flush(); //釋放資源 bos.close(); } }

位元組緩衝輸入流

java.io.BufferedInputStream extends InputStream

繼承自父類的成員方法:

- int read():從輸入流中讀取資料的下一個位元組

- int read(byte[] b):從輸入流中讀取一定數量的位元組,並將其儲存在緩衝區陣列b中

- void close():關閉此輸入流並釋放與該流關聯的所有系統資源

構造方法:

BufferedInputStream(InputStream in)

BufferedInputStream(InputStream in, int size)

使用步驟:

1.建立FileInputStream物件,構造方法中繫結要讀取的資料來源

2.建立BufferedInputStream物件,構造方法中傳遞FileInputStream物件,提高FileInputStream物件的讀取效率

3.使用BufferedInputStream物件中的方法read,讀取檔案

4.釋放資源

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class Demo02BufferedInputStream {
    public static void main(String[] args) throws IOException {
        //建立FileInputStream物件,構造方法中繫結要讀取的資料來源
        FileInputStream fis = new FileInputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\a.txt");
        //建立BufferedInputStream物件,構造方法中傳遞FileInputStream物件,提高FileInputStream物件的讀取效率
        BufferedInputStream bis = new BufferedInputStream(fis);
        //使用BufferedInputStream物件中的方法read,讀取檔案
        byte[] bytes = new byte[1024];
        int len = 0;
        while((len = bis.read(bytes)) != -1){
            System.out.println(new String(bytes,0,len));
        }
    }
}

明日任務:字元緩衝區的輸入輸出流