/*
MyBufferedReaderZengQiang
*/
import java.io.*;
class MyBufferedReaderZengQiang extends Reader //为什么要继承Reader?
{
private Reader r;
MyBufferedReader(Reader r)
{
this.r=r;
}
public String myReadLine() throws IOException
{
//定义一个临时容器。原BufferReader封装的是字符数组
//为了演示方便,定义一个StringBuilder,因为最终还是要将数据变成字符串
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;
if(ch=='\n')
return sb.toString();
else
sb.append((char)ch);
}
return null;
}
/*
覆盖Reader中的抽象方法
*/
public int read(char[] cbuf,int off,int len)
{
return.r.read(cbuf,off,in);
}
public void close()throws Exception
{
r.close();
}
//自定义关闭方法
public void myClose()throws IOException
{
r.close();
}
}
class MyBufferedReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("buf.txt");
MyBufferedReader mybufr=new MyBufferedReader(fr);
String line=null;
while((line=mybufr.myReadLine())!=null)
{
System.out.println(line);
}
mybufr.myClose();
}
}
为什么要继承Reader呢?自己定义的类里面的方法可以满足自己的使用要求了,而且继承了Reader还要复写里面的抽象方法,感觉没有增加类的功能,求解!
|
|