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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁清平 中级黑马   /  2012-5-17 20:18  /  2229 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

InputStreamReader 是字节流通向字符流的桥梁
OutputStreamWriter 是字符流通向字节流的桥梁

这两句话今天都快把我搞晕倒了!!!
越起越理解不了。。。刚开始没注意还不觉得难以理解。。。现在发现我真的无法理解啦!!!
我是这样认为的:既然后辍是Reader和Writer那么它俩一定是操作字符的。。。
可是InputStreamReader 成了是字节流通向字符流的桥梁???求解释啊。。。

4 个回复

倒序浏览
inputStreamReader  OutputStreamWriter 是IO中的转换流,用于把字节流转换为字符流。
比如你用字节流读入一个文件,然后操作的时候想要用字符流,就需要用这样的转换
InputStreamReader isr=new InputStreamReader(new FileInputStream(("D\\a.java"))) ;
回复 使用道具 举报
因为它的数据源和数据目的不同,而产生出来的。inputStreamReader ,OutputStreamWriter是IO流中的转换流,这个转换流最大的特点,除了字符和字节之间的转换,最重要的还可以指定编码格式。 至于说怎么理解这两个,很简单,首先确认源和目的是否都是纯文本,如果是的话,那么可以使用字符或者字节流,如果不是,这时候就可以使用转换流,转换流不是用来提高效率,而是用来提供方便的。方便操作IO流中的数据。
回复 使用道具 举报
本帖最后由 徐然 于 2012-5-17 23:07 编辑

这个具体我也不是很明白
不过我平时都是这样理解
主要看他们的构造函数
InputStreamReader (InputStream in),是字节流通向字符流的桥梁,把接收的字节流转换成字符流

OutputStreamWriter (OutputStream out)是字符流通向字节流的桥梁,就是把输出的字符写入所接收的字节流
他们都是对字符的操作,但操作的对象时不同的,InputStreamReader 操作的是流;OutputStreamWriter 操作的是字符
InputStreamReader 字节流通向字符流,是把接收的字节流转换成字符流,所转换的是目的-----也就是读取流
OutputStreamWriter字符流通向字节流,把输出的字符写入所接收的字节流,所转换的是源-----也就是字符


不知道这样理解对不对?
回复 使用道具 举报
      亲,你记得毕老师的视频课中说过凡是名称中带有Stream的类都属于字节流类这么一句话吗,InputStreamReader 和OutputStreamWriter 类名中都带有Stream,所以又怎么能说后辍是Reader和Writer,那么它两一定就是操作字符的呢!
      InputStreamReader 和OutputStreamWriter都是有系统已经定义好的转换类。
      InputStreamReader 是字节流通向字符流的桥梁。每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。因为硬盘和内存中数据都是以二进制字节码的形式来进行存储的,要将其从内存中读出来,首先读取的当然是字节码,用到字节流,而读取后打印到控制台上又必须是可识别的字符,所以,要启用从字节到字符的有效转换,而InputStreamReader刚好能实现这一功能
      OutputStreamWriter 是字符流通向字节流的桥梁:每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。因为数据写入到内存以及磁盘上都是以二进制存储,所以当然要将字符转换为字节码后,才能存储到内存缓冲区中。

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

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