InputSteream和OutpurStream是针对基于字节(byte)输入输出设计的,实际应用中常常需要读写的是基于字符(char ,Unicode 2个字节)的,java.io.Reader和java.io.Writer就是所有读写字符数据流的父类。
Reader提供的方法和InputStream提供的几乎是一样的,不同之处在于Reader的操作多数是char类型的。
对上图(从下往上看)总结说明如下:
- Reader类中定义了成员变量lock,顾名思义,lock的用途是解决实现对流操作的同步问题。Reader的子类可以使用这个成员变量来实现流操作的同步操作。
- F ilterReader也是采用了Decorator(装饰)模式,与我们在前面学习InputStream、OutputStream相比较,如下图所示: