A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张天军 中级黑马   /  2013-12-26 10:46  /  1621 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

InputStream  OutputStream

Writer Reader

那InputStreamReader是Reader的子类吗?

他是什么含义,是将字节流对象转换成字符流对象吗?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

倒序浏览
是啊,它是字节流转化为自符流的桥梁。比如键盘,它接受的是字节流,将它转化为字符流操作更简单
回复 使用道具 举报
本帖最后由 Diaraelo 于 2013-12-26 14:28 编辑

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

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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马