標籤:
一.字元流的緩衝區
1.什麼是緩衝區
緩衝區又稱為緩衝,它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,
這部分預留的空間就叫做緩衝區。緩衝區根據其對應的是輸入裝置還是輸出裝置,分為輸入緩衝區和輸出緩衝區。
2.為什麼要引入緩衝區
緩衝區就是一塊記憶體區,它用在輸入輸出裝置和CPU之間,用來快取資料。它使得低速的輸入輸出裝置和高速的CPU能夠協調工作,避免低
速的輸入輸出裝置佔用CPU,解放出CPU,使其能夠高效率工作。
3.字元流的緩衝
3.1 BufferWriter執行個體
1 import java.io.*; 2 3 //使用BufferedWriter緩衝區對象來讀取資料 4 public class BufferedWriterDemo { 5 6 public static void main(String[] args) throws IOException{ 7 //建立一個檔案流來儲存資料,並傳遞給BufferedWriter對象 8 FileWriter fw =new FileWriter("BuffWriter_copy.txt"); 9 //建立緩衝區對象並將檔案流對象傳遞給其建構函式10 BufferedWriter bufw=new BufferedWriter(fw);11 //往緩衝區中寫資料12 for(int i=0;i<10;i++){13 14 bufw.write("abcde"+i);15 16 bufw.newLine();17 //將記憶體中的資料重新整理到檔案中18 bufw.flush();19 }20 //關閉緩衝區21 bufw.close();22 }23 24 }
運行結果
3.2 BufferedReader執行個體
import java.io.*;/* * 建立BufferedReader緩衝區,使用newLine和readLine方法 */public class BUfferedReaderDemo { public static void main(String[] args) throws IOException { //建立檔案流,並將資料傳遞給緩衝區建構函式 FileReader fr = new FileReader("test.txt") ; //建立緩衝區,調用其建構函式 BufferedReader bufr = new BufferedReader(fr); //將資料列印 //因為BufferedReader返回的最後資料為String,如果到了最後則為null String line=null; //調用BufferedReader的readLine方法 while((line=bufr.readLine())!=null){ System.out.println(line); } }}
運行結果
二.綜合執行個體
利用字元緩衝區來將一個檔案內容複寫到另一檔案中
import java.io.*;/* * 利用字元緩衝區來將一個檔案內容複寫到另一檔案中 */public class BufferWriterDemo { public static void main(String[] args) { //建立一個緩衝區寫對象,並初始化為null BufferedWriter bufw=null; //建立一個緩衝區讀對象,並初始化為null BufferedReader bufr=null; try{ //緩衝區的建構函式必須 有一個參數 //建立一個寫檔案的流並傳遞給緩衝區寫對象的建構函式 bufw=new BufferedWriter(new FileWriter("buffer_copy.txt")); //建立一個讀檔案的流並傳遞給緩衝區讀對象的建構函式 bufr=new BufferedReader(new FileReader("FileRead.java")); //緩衝區返回一個String值,當緩衝區中沒有資料是值為null String line=null; //緩衝區寫對象有一個readLine函數,用來按行讀取資料 while((line=bufr.readLine())!=null){ //緩衝區寫對象也有write函數 bufw.write(line); //newLine將讀到的資料換行,也就是按原來資料格式一致來儲存 bufw.newLine(); //重新整理資料到檔案中 bufw.flush(); } } catch(IOException e){ throw new RuntimeException("讀寫錯誤"); } finally{ try{ if(bufw!=null){ bufw.close(); } } catch(IOException e){ throw new RuntimeException("寫錯誤"); } try{ if(bufr!=null){ bufr.close(); } } catch(IOException e){ throw new RuntimeException("讀錯誤"); } } }}
運行結果
Java IO(input output)流<二>