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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 2012 中级黑马   /  2013-9-16 12:29  /  1391 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄兴旺 于 2013-9-23 12:00 编辑

大家都知道在IO中有两个转换流,这两个转换流用于实现将字节流转换为字符流,其中InputStreamReader将字节输入流转换成字符输入流,OutputStreamWriter将字节输出流转化成字符输出流。
我想问的是,java怎么没有把字符流转换成字节流的转换流呢?

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

4 个回复

倒序浏览
1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。

2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。
3.字符流已经很方便了,好像很少把字符转到字节的吧 = ={:soso_e121:}

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

回复 使用道具 举报
以字符为导向的stream基本上有与之相对应的以字节为导向的Stream,两个对应类实现的功能相同,只是操作时的导向不同

1:字节输入流转换为字符输入流:

InputStreamReader是字节流向字符流的桥梁,它使用指定的charset读取字节并将其解码为字符,它使用的字符集可以由名称指定或显示给定。根据InputStream的实例创建InputStreamReader的方法有4种:

InputStreamReader(InputStream in)//根据默认字符集创建

InputStreamReader(InputStream in,Charset cs)//使用给定字符集创建

InputStreamReader(InputStream in,CharsetDecoder dec)//使用给定字符集解码器创建

InputStreamReader(InputStream in,String charsetName)//使用指定字符集创建

2:字节输出流转换为字符输出流

OutputStreamWriter是字符流通向字节流的桥梁,它使用指定的charset将要写入流中的字符编码成字节,它使用的字符集可以由名称指定或显示给定,否则将接受默认的字符集:

根据根据InputStream的实例创建OutputStreamWriter的方法有4种:

OutputStreamWriter(outputstream out)//根据默认的字符集创建

OutputStreamWriter(outputstream out,charset cs)//使用给定的字符集创建

OutputStreamWriter(outputstream out,charsetDecoder dec)//使用组定字符集创建

OutputStreamWriter(outputstream out,String charsetName)//使用指定字符集创建

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

回复 使用道具 举报
是你搞错咯,
OutputStreamWriter就是字符流转字节流的桥梁啊
回复 使用道具 举报
对于这个问题我也有过疑问,不过同学,你上面写错了,应该是
InputStreamReader是吧字节流转换成字符流
OutputStreamWriter是把字符流转换成字节流
为什么InputStreamReader是吧字节流转换成字符流,而没有读取时把字符流转换成字节流呢?
我经过思考明白:因为他是读取,在硬盘上存放的是字节,从硬盘上读取数据当然用的是字节读取方法了(当然读取文本文件是可以用字符流读取,但是他底层也是调用的字节读取方式),所以读取时是字节转换字符的桥梁。
同样反向道理OutputStreamWriter是把字符流转换成字节流也不言自明了吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马