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; importjava.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)); } } }
明日任務:字元緩衝區的輸入輸出流