假如我们要读写的数据是分行的,那么每次读写都必须是一行一行地进行。但是由于字节流和字符流都是按顺序读写数据,所以这两种流无法满足我们的要求,因为我们不知道每一行的字节或者字符是多少。所以这时候就需要用到缓冲流了。
BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流。二者的源和目的地必须是字符输入流和字符输出流。也就是说缓冲流和字符流是配合使用的。
下面我们就用缓冲流向创建好的空白文档中写入四行菜名,然后再用缓冲流读出来:
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 Test {
public static void main(String[] args) {
String[] content = {"西红柿炒鸡蛋","小葱拌豆腐","糖醋鲤鱼","红烧排骨"};
File file = new File("C:\\Users\\lenovog\\Desktop\\test1\\缓冲流.txt");
try {
//输出流
FileWriter fileWriter = new FileWriter(file);//底层流
BufferedWriter bWriter = new BufferedWriter(fileWriter);//上层流
for(String string : content){
bWriter.write(string);
bWriter.newLine();//写完一行之后插入一个回行符,跳转到新行
}
//关闭输出流时先关闭顶层流,再关闭底层流
bWriter.close();
fileWriter.close();
//输入流
FileReader fileReader = new FileReader(file);
BufferedReader bReader = new BufferedReader(fileReader);
String string = null;
while((string = bReader.readLine())!=null){//readLine()能够自动换行
System.out.println(string);
}
bReader.close();
fileReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
完成后运行,就可以看到控制台输出如下结果:
西红柿炒鸡蛋
小葱拌豆腐
糖醋鲤鱼
红烧排骨