Buffer
Buffers are used for storing data temporarily.
buffer is for binary data
Buffers are continuous memory used to write binary data.
For example, data from disk or from the network. All of it streams straight into buffers. You can then read a buffer and convert the bytes into any encoding you need.
Stream vs Buffer
Stream is the actual input or output source of bytes.
A buffer is where data from the stream is held before it moves to the next place.
Streams vs Readers
Streams handle binary data. This includes InputStream, OutputStream, and all that extend them. They read and write bytes from files, the network, or any device.
Readers and writers handle text, that's characters. They sit on top of streams. They convert bytes to characters and back, using a character encoding.