緩沖流增強了讀寫文件的能力,比如Student.txt是一個學生的名單,每個姓名占一行。如果我們想要讀取名字,那么每次必須讀取一行,使用FileReader流很難完成這樣的任務,因為我們不清楚一行有多少字符,FileReader類沒有提供讀取一行的方法。
1.BufferedReader和BufferedWriter類創建的對象稱作緩沖輸入、輸出流。二者的源和目的地必須是字符輸入流和字符輸出流。
構造方法:
BufferedReader(Reader in);
BufferedWriter (Writer out);
2. BufferedReader和BufferedWriter類讀寫文件的方法:
readLine() BufferedReader流讀取文本行
write(String s,int off,int len)BufferedWriter流把字符串s寫到文件中
newLine(); BufferedWriter流向文件寫入一個回行符
示例
創建主類Demo38
文件如下:
同樣,保證c.txt為空內容,先從里面寫,再從外面讀
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo38 {
public static void main(String[] args) {
String[] content = {"我是中國人","我最愛祖國","我討厭日本人","我也討厭韓國人"}; //寫入字符串數組
File file = new File("C:\\Users\\blue\\Desktop\\test\\c.txt"); //寫入目標文件
try {
FileWriter fw = new FileWriter(file); //第一層嵌套
BufferedWriter bw = new BufferedWriter(fw); //傳遞給Writer的子類
for(String str:content){ //增強for循環
bw.write(str); //寫入字符串
bw.newLine(); //每一個字符串還換行
}
bw.close(); //從上層數據關流
fw.close();
寫入成功 且換行成功
//操作的輸入流對象
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String string = null;
while((string = br.readLine())!= null){ //讀取數組,到達文件尾部就是空
System.out.println(string);
}
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
運行結果