BufferedReader的使用是需要FileReader配合
程序在读取时一个字一个字符读取,也可以存数组中,但是使用BufferedReader后,会带有一个缓冲区内存空间。会把数据源中字符批量的读取在缓冲区中,下面程序在读取时不用一个一个字符访问数据源,在缓冲区中读取数据
按执行读取内容的readLine()方法
缓冲流读操作
public static void main(String[] args) {
//BufferedReader的使用是需要FileReader配合
File file =new File("D:/a/1.txt");
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(file);
br=new BufferedReader(fr);
//只读一行
//String s= br.readLine();
//System.out.println(s+"读取成功");
String s= br.readLine();
while (s!=null){
System.out.println(s);
s= br.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
assert fr !=null;//断言 判断是否为空
fr.close();
assert br !=null;
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedWirte写入操作
System.out.println("===========写入操作========");
File file=new File("D:/a/4.txt");
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
bw=new BufferedWriter(fw);
bw.write("大山"+"写入成功");
//bw.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
读写操作需要注意关流顺序
public static void main(String[] args) {
File file1 = new File("D:/a/bb.txt");
File file2 = new File("D:/a/ee.txt");
FileReader fr = null;
FileWriter fw = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
fr = new FileReader(file1);
fw = new FileWriter(file2);
br = new BufferedReader(fr);
bw = new BufferedWriter(fw);
String s = br.readLine();
bw.write(s);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//缓冲流 因为构造需要一个Reader 或Writer
//所以关闭资源的时候 先关闭缓冲流 再关闭字符流
/*
这里关闭流要从大到小关闭,BufferWriter包装了FileWriter,BufferWriter"大",FileWriter"小"
FileWriter.close();
BufferWriter.close();
这样的顺序就是不行,FileWriter流自己关闭了。
然后BufferWriter流又把FileWriter流关闭一次就会报错java.io.IOException: Stream closed.
*/
br.close();
bw.close();
fr.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}