java设计模式之适配器模式以及在java中作用

适配器作用就是讲一个接口适配到另一个接口,在Java 的I/O类库中有很多这样的需求,如将字符串数据转变成字节数据保存到文件中,将字节数据转变成流数据等。

以InputStreamReader和OutputStreamWriter类为例。

InputStreamReader和OutputStreamWriter类分别继承了Reader和writer接口,但是要创建他们的对象必须在构造函数中传入一个InputStream和OutputStream

的实例,InputStreamReader和OutputStreamWriter类的作用也就是将InputStream和OutputStream适配到Reader和Writer。

适配器是InputStreamReader,源角色是InputStream代表的实例对象,目标接口就是Reader类。

InputStream:得到的是字节输入流,InputStream.read("filename")之后,得到字节流

Reader:读取的是字符流

InputStreamReader:从字节到字符的桥梁。InputStreamReader(InputStream.read("filename"));

reader.read(InputStreamReader(InputStream in));便可从字节变为字符,打印显示了。

java.io.Reader 和 java.io.InputStream 组成了Java 输入类。

Reader 用于读入16位字符,也就是Unicode 编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据。

Reader支持16位的Unicode字符输出,

InputStream支持8位的字符输出。

Reader和InputStream分别是I/O库提供的两套平行独立的等级机构,

InputStreamReader类

InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。 
构造方法 : 
    InputStreamReader isr = new InputStreamReader(InputStream in);//构造一个默认编码集的InputStreamReader类 
    InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//构造一个指定编码集的InputStreamReader类。 
    
    参数 in对象通过 InputStream in = System.in;获得。//读取键盘上的数据。 
    或者 InputStream in = new FileInputStream(String fileName);//读取文件中的数据。可以看出 FileInputStream 为InputStream的子类。 
主要方法 :int read();//读取单个字符。 
                 int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。

参考的原文链接http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html

原文地址:https://www.cnblogs.com/kisty/p/6123423.html