自己動手實現一個java過濾器類
過濾器採用了裝飾者設計模式:
package myFliter;
import java.io.*;
public class LowerCaseInputStream extends FilterInputStream{
public LowerCaseInputStream(InputStream in) {
super(in);
}
@Override
public int read() throws IOException {
int c=super.read();
if(c==-1)
{
return c;
}
else
{
return Character.toLowerCase(c);
}
}
//@Override
public int read(byte[] b, int off, int len) throws IOException {
int result=super.read(b, off, len);
for(int i=off;i<result+off;i++)
{
b[i]=(byte)Character.toUpperCase((char)b[i]);
}
return result;
}
}
測試程式碼
package myFliter;
import java.io.*;
public class testFilter {
public static void main(String []args)
{//裝飾者不光可以裝飾被裝飾類,還可以裝飾被裝飾類的子類
try{
InputStream in=new LowerCaseInputStream(
new BufferedInputStream(new FileInputStream("c://text.txt")));
byte b[]=new byte[100];
in.read(b, 0, 100);
for(int i=0;i<b.length;i++)
{
if(i<28)
{
System.out.print((char)b[i]);
}
else
{
System.out.println((int)b[i]);
}
}
}catch (IOException e)
{
e.printStackTrace();
}
}
}