缓冲流加强了读写文件的能力,好比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();
}
}
}
运行结果