Each time you read from an unbuffered Reader, there's a matching read from the underlying input stream. Therefore it's a good idea to wrap a BufferedReader around each Reader whose read() operations are expensive, such as a FileReader. For example,
Copyright 2000 Elliotte Rusty Harold
Last Modified January 29, 2000