前面已经讲解过 InputStream 类和 OutputStream 类在读写文件时操作的都是字节,如果希望在程序中操作字符,使用这两个类就不太方便,为此 JDK 提供了字符流。同字节流一样,字符流也有两个抽象的顶级父类,分别是 Reader 和 Writer。其中,Reader 是字符输入流,用于从某个源设备读取字符。Writer 是字符输出流,用于向某个目标设备写入字符。Reader 和 Writer 作为字符流的顶级父类,也有许多子类,接下来通过继承关系图来列出 Reader 和 Writer 的一些常用子类,如下图所示。
从上图可以看到,字符流的继承关系与字节流的继承关系有些类似,很多子类都是成对(输入流和输出流)出现的。其中,FileReader 和 FileWriter 用于读写文件,BufferedReader 和 BufferedWriter 是具有缓冲功能的流,使用它们可以提高读写效率。