1暇检、java.io.BufferedReader和java.io.BufferedWriter類各擁有8192字符的緩沖區(qū)。當BufferedReader在讀取文本文件時深寥,會先盡量從文件中讀入字符數(shù)據(jù)并置入緩沖區(qū)攘乒,而之后若使用read()方法,會先從緩沖區(qū)中進行讀取惋鹅。如果緩沖區(qū)數(shù)據(jù)不足则酝,才會再從文件中讀取,使用BufferedWriter時闰集,寫入的數(shù)據(jù)并不會先輸出到目的地沽讹,而是先存儲至緩沖區(qū)中。如果緩沖區(qū)中的數(shù)據(jù)滿了武鲁,才會一次對目的地進行寫出爽雄。
2、從標準輸入流System.in中直接讀取使用者輸入時沐鼠,使用者每輸入一個字符挚瘟,System.in就讀取一個字符。為了能一次讀取一行使用者的輸入迟杂,使用了BufferedReader來對使用者輸入的字符進行緩沖刽沾。readLine()方法會在讀取到使用者的換行字符時,再一次將整行字符串傳入排拷。
3侧漓、System.in是一個位流,為了轉換為字符流监氢,可使用InputStreamReader為其進行字符轉換布蔗,然后再使用BufferedReader為其增加緩沖功能。例如:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
下面的示例示范了BufferedReader和BufferedWriter的使用浪腐∽葑幔可以在文字模式下輸入字符,程序會將輸入的文字存儲至指定的文件中议街,如果要結束程序泽谨,輸入quit字符串即可。
mport java.util.*;
import java.io.*;
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(args[0]));
String input = null;
//每讀一行進行一次寫入動作
while(!(input = bufReader.readLine()).equals("quit")) {
bufWriter.write(input);
//newLine()方法寫入與操作系統(tǒng)相依的換行字符吧雹,依執(zhí)行環(huán)境當時的OS來決定該輸出那種換行字符
bufWriter.newLine();
}
bufReader.close();
bufWriter.close();
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("沒有指定文件");
} catch(IOException e) {
e.printStackTrace();
}
}
}
//運行后會在目錄下產生一個文件test2.txt,并在其中寫入剛才輸入的內容涂身。