InputStream/Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流。

OutStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。

为什么有了字节流,还要有字符流呢?

字符流是由Java虚拟机将字节转换得到的,问题就出在这个过程还算是非常耗时,并且,如果我们不知道编码类型就很容易出现乱码问题。所以,I/O流就干脆提供了一个直接操作字符的接口,方便我们平时对字符进行流操作。如果音频文件、图片等媒体文件用字节流比较好,如果涉及到字符的话,使用字符流比较好。