package ch.panter.decorator.reader; import java.io.FilterReader; import java.io.IOException; import java.io.Reader; class DowncaseReader extends FilterReader { public DowncaseReader( Reader in ) { super( in ); } @Override public int read() throws IOException { char[] buf = new char[1]; return read( buf, 0, 1 ) == -1 ? -1 : buf[0]; } @Override public int read( char[] cbuf, int off, int len ) throws IOException { int numchars = 0; while ( numchars == 0 ) { numchars = in.read( cbuf, off, len ); if ( numchars == -1 ) // EOF? return -1; for ( int i = off; i < off + numchars; i++ ) { cbuf[i] = Character.toLowerCase(cbuf[i]); } } return numchars; } }