1. 程式人生 > >java輸入輸出13:IO流(BufferedInputStream和BufferedOutputStream拷貝)

java輸入輸出13:IO流(BufferedInputStream和BufferedOutputStream拷貝)

緩衝思想

位元組流一次讀寫一個數組的速度明顯比一次讀寫一個位元組的速度快很多,這是加入了陣列這樣的緩衝區的效果。

BufferedInputStream

BufferedInputStream中讀取一個緩衝區(陣列),從BufferedInputStream中讀取一個位元組時,BufferedInputStream會一次性從檔案中讀取8192個位元組,存在緩衝區中並返回程式一個位元組。程式再次讀取時,就不用找檔案了,直接從緩衝區中獲取。直到緩衝區中所有的位元組都被使用過,才重新從檔案中獲取另外8192個位元組。

構造方法:
在這裡插入圖片描述

BufferedOutputStream

BufferedOutStream也內建了一個緩衝區(陣列)。當程式向流中寫出位元組時,不會直接寫到檔案,先寫到緩衝區中,直到緩衝區寫滿,BufferedOutputStream才會把緩衝區中的資料一次性寫到檔案裡。

構造方法:
在這裡插入圖片描述

案例演示
package filePackage;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class Demo11_BufferStream {
	
	public static void main(String[] args) throws Exception {
		FileInputStream fis = new FileInputStream("yy.txt");//建立檔案輸入流物件
		BufferedInputStream bfis = new BufferedInputStream(fis);//建立緩衝區fis裝飾
		FileOutputStream fos = new FileOutputStream("xx.txt");//建立輸出流物件
		BufferedOutputStream bos = new BufferedOutputStream(fos);//建立緩衝區fos裝飾
		
		int b;
		while ((b = bfis.read()) != -1) {
			bos.write(b);
		}
		bfis.close();//只關閉裝飾後的物件即可
		bos.close();
	}
}