调用自定义装饰类读取文件
public static void test2()throws Exception
{
MyBuffer br = new MyBuffer(new FileReader(new File("IOTest11.java")));
String line = null;
while((line = br.myReadLine()) != null)
{
System.out.println(line);
}
br.close();
}
自定义的装饰类
class MyBuffer
{
private FileReader fr;
MyBuffer(FileReader fr)
{
this.fr = fr;
}
public String myReadLine()throws Exception
{
StringBuilder sb = new StringBuilder();
int num = 0;
while((num = fr.read()) != -1)//只有没有到达末位
{
//System.out.println(num);
//Thread.sleep(2000);
if((char)num == '\r')
{
continue;
}
if((char)num == '\n')
{
return sb.toString();
}
sb.append((char)num);
//System.out.println("StringBuilder=" + sb);
}
//当读到最后一行的数据的时候
if(sb.length()!=0)
{
return sb.toString();
}
return null;
}
public void close()throws Exception
{
fr.close();
}
}
步骤:
(1)将FileReader传入其构造函数
(2)自定义readLine()、close()等方法,这些方法实际上都是在FileReader的基础上进一步的功能加强。
通过上诉操作可以知道装饰模式都会有一个操作原型,而其出现是对原有对象的某些功能进行进一步的封装,增强其功能,进一步提高效率。