緩衝流加強了讀寫文件的能力,好比Student.txt是一個學生的名單,每一個姓名佔一行。若是咱們想要讀取名字,那麼每次必須讀取一行,使用FileReader流很難完成這樣的任務,由於咱們不清楚一行有多少字符,FileReader類沒有提供讀取一行的方法。java
1.BufferedReader和BufferedWriter類建立的對象稱做緩衝輸入、輸出流。兩者的源和目的地必須是字符輸入流和字符輸出流。數組
構造方法:spa
BufferedReader(Reader in);對象
BufferedWriter (Writer out);blog
2. BufferedReader和BufferedWriter類讀寫文件的方法:字符串
readLine() BufferedReader流讀取文本行get
write(String s,int off,int len)BufferedWriter流把字符串s寫到文件中string
newLine(); BufferedWriter流向文件寫入一個回行符it
示例io
建立主類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();
}
}
}
運行結果