- java.lang.Object
-
- java.io.Reader
-
- java.io.FilterReader
FilterReader是Reader的一个子类,Reader的所有子类为:【BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader】
在这些子类中唯独 FilterReader 是抽象类,不能够直接定义使用,否则会提示 ‘'FilterReader' 为 abstract;无法实例化’。
要用这个 FilterReader 最好的方式就是自己定义一个自己的业务类,比如叫 MyselfReader 然后 extends FilterReader
在自己的类里复写父类的方法,官方的建议是“Subclasses of FilterReader
should override some of these methods and may also provide additional methods and fields.” 就是说子类应该重写一些自己要特殊处理的父类方法,也可以在子类中增加一些父类没有的自有的方法,为 FilterReader 这个父类扩展更多的功能。
业务场景可能是:
1、从其他API服务接口请求获取的数据,要用Reader按照字符一个一个读取并处理;
2、从数据库中读取的数据要按照字符处理一个一个读取处理;
3、很少有直接从文件读取内容,然后一个一个字符处理的情况,因为从文件读取完全没有必要用这个类,有FileReader去处理。
看看下面这段代码,个人感觉这就是脱*子放*。见笑了,哈哈。
FileReader reader = new FileReader(file);
FilterReader fr = new FilterReader(reader) {
@Override
public int read() throws IOException {
char[] c = new char[1024];
int len;
len = super.read(c);
System.out.print(c);
return len;
}
};
fr.read();