BufferedReader属于java.io.Reader的子类,不仅实现了FileReader的功能,还增加了缓冲区,提高了程序的读写效率。
下面,自定义类myBufferedReader模拟实现BufferedReader的功能:
class myBufferedReader
{
private Reader r;
myBufferedReader(Reader r)
{
this.r = r;
}
public String myReadLine()throws IOException
{
int ch;
StringBuilder sb = new StringBuilder();
while((ch=r.read())!=-1)
{
if(ch == '\r')
continue;
else if(ch == '\n')
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!=0)
return sb.toString();
return null;
}
public void myClose()throws IOException
{
r.close();
}
}
定义的myBufferedReader类,提供了构造函数、myReadLine方法和myClose()方法。
通过构造函数可向类中传入一个Reader类的子类对象,myClose()方法可关闭流对象。
在方法myReadLine()中,定义了一个缓冲区sb,每读一个字符,就将字符保存到缓冲区中,当读完一行后,将改行的值返回。
while循环外的if语句是对r对象的最后一行单独处理,当最后一行有内容但没有换行时,这条语句能把最后一行的内容给返回