InputStreamReader的构造方法本质上只有一种那就是设置InputStream,这个被适配的对象 另外可选的设置编码,如果不设置使用系统默认的 设置系统编码的形式有: 使用给定字符集 和 使用给定字符集解码器 两种 |
构造方法中,都无一例外的设置了sd 他是StreamDecoder, decode也就是解码(read 从字节流读取成为字符,解码)  |
再回头仔细看下方法的代码,你会发现 InputStreamReader的所有方法只有两种类型,就仅仅做了两件事情 所有的构造方法设置了内部的StreamDecoder sd的值 剩下的所有的方法都是无差别的转发到sd中 所以说,根本的解码是StreamDecoder  |
StreamDecoder中提供的其他方法(除了forInputStreamReader系列) 又都依赖于内部的私有方法 这些私有方法又借助于InputStream  |
所以可以看得出来InputStreamReader只是一个外包公司,他的活都是转包给StreamDecoder的
InputStreamReader小结
内部借助StreamDecoder的实现过程作为了解
需要记住InputStreamReader 是一个转换流,用于把InputStream转换为Reader
也就是让一个InputStream能够以Reader的方式进行工作, InputStreamReader 继承了Reader,所以他是一个Reader
他是Reader的实现类,提供了Reader协议常规的读取方法以及配套方法
掌握了构造方法即可,其他方法语义同Reader中的约定
| public int read() throws IOException | 读取单个字符,返回读取到的字符串 |
| public int read(char cbuf[], int offset, int length) | 读取字符到指定数组cbuf[] ,从指定偏移量offset开始存储,读取length个 |
| public boolean ready() | true表示下一个read()方法保证不会阻塞 |
| public void close() throws IOException | |
OutputStreamWriter
OutputStreamWriter 也是适配器模式 继承了Writer 是Writer 的 实现类 Writer是适配器模式的目标Target 被适配者Adaptee是OutputStream 被适配者通过构造方法传递,属于适配器模式中的对象适配器 |
 |
类似InputStreamReader ,他的构造方法也是涉及 被适配者OutputStream 以及字符编码 如果不设置使用系统默认的字符编码 设置系统编码的形式有: 使用给定字符集 和 使用给定字符集解码器 两种 |