黑马程序员技术交流社区

标题: InputStreamReader的含义? [打印本页]

作者: 张天军    时间: 2013-12-26 10:46
标题: InputStreamReader的含义?
InputStream  OutputStream

Writer Reader

那InputStreamReader是Reader的子类吗?

他是什么含义,是将字节流对象转换成字符流对象吗?
作者: HM王琦    时间: 2013-12-26 11:07
是啊,它是字节流转化为自符流的桥梁。比如键盘,它接受的是字节流,将它转化为字符流操作更简单
作者: Diaraelo    时间: 2013-12-26 14:24
本帖最后由 Diaraelo 于 2013-12-26 14:28 编辑

你可以多学习一下使用API,API中的io包中可以清楚的看到 InputStreamRead 是Read 的子类,
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
用比较简单的话来说就是看下这个代码就知道
  1. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
复制代码
可以看到System录入的字节内容被通过这个方法转换成了字符流来处理,这样就可以使用到很多方便处理文字的方法,比如读一行。等等

下图是他在API中的父类层次:


作者: 悠然的我    时间: 2013-12-26 15:16
类的关系查阅API文档就可以得到了,楼上已经回答过了。InputStreamReader除了包装成字符流处理可以使用readLine()这样便捷的方法以外,主要作用在于编码的转换。
作者: 伊文龙    时间: 2013-12-26 16:30
你可以这么来想象,InputStream对象从数据源读取到数据(这个数据一定是byte数组)交给InputStreamReader对象,InputStreamReader把数据处理(这个处理可以是通过new String(byte[] bytes) 的方式完成)成String类型在返回给你。这就完成了转换。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2