BufferedReader implements a line-buffered layer on top of FileReader to allow convenient extraction of lines, and usually buffered I/O is more efficient. But of course, this is only relevant to text files because binary files have no notion of "lines".
Also, the fact that FileInputStream is byte-oriented and FileReader is character-oriented will be obvious when it comes to reading multibyte files, that uses an encoding where a character consists of 2 or more bytes. FileReader will decode properly because that is character-oriented.
Last edited by cbkihong; 10-01-2007 at 10:26 AM..
Reason: Added comment on multibyte