黑马程序员技术交流社区

标题: 问一个关于转换流的问题。 [打印本页]

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


作者: 八零、玖羚    时间: 2014-7-7 09:12
楼主貌似理解错了,InputStreamReader和OutputStreamWriter只是字符流和字节流之间的桥梁,都是接受从字节流转到字符流,区别是前者是读取,后者是写入,而不是你理解的转变方向的区别。
作者: ╭月牙湾湾╮    时间: 2014-7-7 15:26
八零、玖羚 发表于 2014-7-7 09:12
楼主貌似理解错了,InputStreamReader和OutputStreamWriter只是字符流和字节流之间的桥梁,都是接受从字节 ...

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

嗯,明白了,谢谢你的回复。
作者: 此生逍遥    时间: 2014-7-12 07:49
路过的,也学到了点知识




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