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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ╭月牙湾湾╮ 中级黑马   /  2014-7-4 00:39  /  1931 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家好,请问一个关于转换流的问题。
关于转换流,InputStreamReader好理解。它new对象之后需要接收一个字节流。最终将这个字节流转换成字符流,返回的是一个字符流
但是OutputStreamWriter我就不理解了。它new对象之后同样是需要接收一个字节流。但是它是字符转字节流啊,不是应该接收一个字符流,返回的应该是一个字节流才对。但是为什么代码体现出来它是返回一个字符流呢
代码如下:
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\a.txt"), "UTF-8"));
真心的不懂,求解。

5 个回复

倒序浏览
楼主貌似理解错了,InputStreamReader和OutputStreamWriter只是字符流和字节流之间的桥梁,都是接受从字节流转到字符流,区别是前者是读取,后者是写入,而不是你理解的转变方向的区别。
回复 使用道具 举报
八零、玖羚 发表于 2014-7-7 09:12
楼主貌似理解错了,InputStreamReader和OutputStreamWriter只是字符流和字节流之间的桥梁,都是接受从字节 ...

原来是我理解错了,我就想着若是按我的理解,这些东西都是不通的。。。原来是这样的。感谢你的回复,长姿势了:handshake
回复 使用道具 举报
转换流都 属于字符流 ,所以使用的时候都是 把字节流转换成 字符流,这里可能不好想一点,但是 查看api可以看到
  无论是OutputStreamWriter 还是InputStreamReader 构造函数里面传入的参数都是一个字节流..   
只能是
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\a.txt"), "UTF-8"));
而不可能是反过来写的,
回复 使用道具 举报
北极£莜蓝 发表于 2014-7-11 23:06
转换流都 属于字符流 ,所以使用的时候都是 把字节流转换成 字符流,这里可能不好想一点,但是 查看api可以看 ...

嗯,明白了,谢谢你的回复。
回复 使用道具 举报
路过的,也学到了点知识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马