標籤:java buffered reader 緩衝流
緩衝流,BufferedReader,BufferedWriter
1)BufferedReader,BufferedWriter是更進階的流,二者的源和目的地必須是字元輸入資料流和字元輸出資料流.如果把字元輸入資料流做為BufferedReader流的源,把字元輸出資料流作為BufferedWriter流的目的地,那麼BufferedReader,BufferedWriter將有更強的讀、寫能力。
//建構函式BufferedReader(Reader in);BufferedWriter(Writer out);//常用方法int read();//讀取單個字元int read(char[] cbuf, int off, int len) //將字元讀入數組的某一部分String readLine() //讀取一個文本行void write(int c)//寫入單個字元void write(String s, int off, int len)//寫入字串的某一部分。void write(char[] cbuf, int off, int len)//寫入字元數組的某一部分void newLine()//寫入一個行分隔字元//使用方法FileReader in= new FileReader("Student.txt");BufferedReader ino=new BufferedReader(in);//參數是字元流FileWriter out=new FileWrietr("Student.txt");BufferedWriter outo=new BufferedWriter(out);//參數是字元流
BufferedReader,BufferedWriter 是上層流,它們指向的是底層流,java緩衝技術將上層流和底層流串連。底層字元輸入資料流首先將資料讀入緩衝,BufferedReader流在從緩衝中讀資料;BufferedWriter流是將資料寫入緩衝,底層字元輸出資料流會不斷的將緩衝中的資料寫入到目的地。
程式舉例:
import java.io.*;public class test { public static void main(String args[]) { File file=new File("Student.txt"); String content[]={"這是一本書:","第一章:","第二章:","第三章:"}; try{ FileWriter outOne=new FileWriter(file); BufferedWriter outTwo= new BufferedWriter(outOne);//參數時檔案字元流 for(String str:content) { outTwo.write(str);//寫入一行字串 outTwo.newLine();//寫入新行 } outTwo.close(); outOne.close(); FileReader inOne=new FileReader(file); BufferedReader inTwo= new BufferedReader(inOne);//參數是字元流 String s=null; while((s=inTwo.readLine())!=null) { System.out.println(s);//讀入一行到s,就輸出 } inOne.close(); inTwo.close(); } catch(IOException e) { System.out.println(e); } }}
2)從System.in中讀資料:從標準輸入資料流System.in中直接讀取使用者輸入時,使用者每輸入一個字元,System.in就讀取一個字元。為了能一次讀取一行使用者的輸入,使用了BufferedReader來對使用者輸入的字元進行緩衝。readLine()方法會在讀取到使用者的換行字元時,再一次將整行字串傳入。
System.in是一個位流,為了轉換為字元流,可使用InputStreamReader為其進行字元轉換,然後再使用BufferedReader為其增加緩衝功能。InputStreamReader是轉換流,將位元組流轉換為字元流
程式舉例:將鍵盤輸入的字串寫入檔案中
public class BufferedReaderWriterDemo { public static void main(String[] args) { try { //緩衝System.in輸入資料流 //System.in是位流,可以通過InputStreamReader將其轉換為字元流 BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in)); //緩衝FileWriter BufferedWriter bufWriter = new BufferedWriter(new FileWriter("a.txt")); String input = null; //每讀一行進行一次寫入動作 while(!(input = bufReader.readLine()).equals("quit")) { bufWriter.write(input); //newLine()方法寫入與作業系統相依的換行字元,依執行環境當時的OS來決定該輸出那種換行字元 bufWriter.newLine(); } bufReader.close(); bufWriter.close(); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("沒有指定檔案"); } catch(IOException e) { e.printStackTrace(); } } }
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
java緩衝流,BufferedReader,BufferedWriter 詳解