package com.unis.io;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
public class UppCaseReader extends FilterReader {
public UppCaseReader(Reader in) {
super(in);
}
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
int result = super.read(cbuf, off, len);
for(int i=off;i
if(cbuf[i]>='a'&&cbuf[i]<='z'){
cbuf[i] -= 32;
}
}
return result;
}
//@Override
//public int read() throws IOException {
//int result = super.read();
//if(result>='a'&&result<='z'){
//result-=32;
//}
//return result;
//}
public static void main(String[] args) throws IOException {
Reader reader = new BufferedReader(new UppCaseReader(new FileReader(new File("src/com/unis/io/UppCaseReader.java"))));
int i =0;
while((i=reader.read())!=-1){
System.out.print((char)i);
}
}
}
注:1.在这个类中我们也可以直接继承Reader这个类,但是如果继承Reader类除了要复写read方法(带三个参数的),我们还要复写colse方法。
2.另外在这个类中为什么我们要复写read方法(带三个参数的),而不复写不带参数的read方法呢。这是因为Reader类中所有的read方法到最后都是去调用带三个参数的read方法去实现的,所以我们只用去实现三个参数的read方法即可。
3.在构造方法中传入的reader才是真的reader.
分享到:
2010-10-11 09:51
浏览 3345
评论