An InputStreamReader is a bridge from byte streams to character streams i.e. it reads bytes and decodes them into Unicode characters according to a particular platform. Thus, this class reads characters from a byte input stream. When you create an InputStreamReader, you specify an InputStream from which, the InputStreamReader reads the bytes.
FileReader is a convenience class for reading character files. it is generally meant for reading streams of characters.
The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream. FileReader is meant for reading streams of characters.
A container for data of a specific primitive type.
A buffer is a linear, finite sequence of elements of a specific primitive type.
* A buffer's capacity is the number of elements it contains. The capacity of a buffer is never negative and never changes.
* A buffer's limit is the index of the first element that should not be read or written. A buffer's limit is never negative and is never greater than the its capacity.
* A buffer's position is the index of the next element to be read or written. A buffer's position is never negative and is never greater than its limit.
I am sending you a link. This link will help you.http://www.roseindia.net/java/beginners/LineNumberReaderExample.shtml