I was going through some of the documentation on Java IO and just wanted to make sure whether I get this right:
Unbuffered Input Streams: FileInputStream, InputStreamReader, FileReader
Unbuffered Output Streams: FileOutputStream, OutputStreamWriter, FileWriter
Buffered Output Streams: PrintStream, PrintWriter
In addition, we have the BufferedInputStream, BufferedOutputStream, BufferedReader and BufferedWriter streams to convert the unbuffered streams into buffered versions.
Finally, I observed that for the Character Streams, viz. InputStreamReader, FileReader, OutputStreamWriter, FileWriter, an internal byte-buffer is maintained for the bytes before they are sent into the stream. This byte-buffer is not under our control. Hence, for Character Streams, buffering refers to the high-level character buffer for storing the characters coming in and going out of the program.
Is everything I said correct?
P.S. - I understand that this buffering issue is somewhat implementation dependent, but I just wish to confirm what the javadocs are saying