
An InputStream is the parent class of all input streams and readers. Classes with the Stream keyword will work with bytes, while classes with the Reader keyword will work with characters.
A buffer is a wrapper around these threads to reduce system calls and improve performance and read speed.
Non-buffered streams return one byte each time, while a Bufferd stream does not return until the buffer is full.
For example, if you take a BufferedReader, you can read the whole line using readLine(), but in non buffered stream, you must read a single character using the method read().
source
share