一、字符缓冲流BufferdReader和BufferedWriter类
缓冲的字符流的出现提高了对流的操作效率,原理就是将数组进行封装。BufferdReader和BufferedWriter类可以缓冲区方式进行高效的输入/输出。
1、字符缓冲输入流BufferdReader类
(1) 类声明
public class BufferedReader extends Reader
(2) 构造方法
public BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符输入流。
public BufferedReader(Reader in,int sz):创建一个使用指定大小输入缓冲区的缓冲字符输入流。其中,sz指输入缓冲区的大小,如果sz≤0,则抛出IllegalArgument Exception异常。
(3) BufferedReader的特有方法
public String readLine();//一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回。当读到末尾时,返回null。
2、字符缓冲输出流BufferedWriter类
(1) 类声明
Public class BufferedWriter extends Writer:创建一个使用默认大小输出缓冲区的缓冲字符输出流。
(2) 构造方法
Public BufferedWriter(Writer out) :创建一个使用默认大小输出缓冲区的缓冲字符输出流。
Public BufferedWriter(Writer out,int sz):创建一个使用给定大小输出缓冲区的新缓冲字符输出流。其中,sz指输出缓冲区的大小,,是一个正整数,如果sz≤0,则抛出IllegalArgument Exception异常。
(3) BufferedWriter的特有方法
public void newLine();//写出平台相关的行分隔符来标记一行的终止。Windows平台下为’\n’。
方法readLine()的原理:该方法用的还是与缓冲的字符流相关联的流对象的read()方法,只不过,每一次读到一个字符,先不进行具体操作,先进行临时存储,当读取到回车标记时,将临时容器中存储的数据一次性返回。
3、装饰设计模式和继承的区别
通过所学的继承特性,可以建立MediaWriter类的子类和TextWriter类的子类,在子类中重写父类的write方法即可。
二、今天的缓冲事例
1、
package com.hbsi.IO;
import java.io.*;
public class BufferedIODemo {
public static void main(String[] args){
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter("res\\demo.txt");
bw=new BufferedWriter(fw);
bw.write("hello");
bw.newLine();
bw.write("java");
bw.newLine();
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
2、package com.hbsi.IO;
import java.io.*;
public class BufferedIODemo2 {
public static void main(String[] args){
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader("res/demo.txt");
br=new BufferedReader(fr,255);
String str=null;
while((str=br.readLine())!=null){
System.out.println(str);
}
/*str=br.readLine();
while(str!=null){
System.out.println(str);
str=br.readLine();
}*/
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
if(br!=null)
try{
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
3.package com.hbsi.IO;
import java.io.*;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyBufferedReader mbr=null;
FileReader fr=null;
try {
fr=new FileReader("res/demo.txt");
mbr=new MyBufferedReader(fr);
String str=mbr.readLine();
while(str!=null){
System.out.println(str);
str=mbr.readLine();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
mbr.close();
}
}
}