黑马程序员技术交流社区
标题:
转换流问题
[打印本页]
作者:
2012
时间:
2013-9-16 12:29
标题:
转换流问题
本帖最后由 黄兴旺 于 2013-9-23 12:00 编辑
大家都知道在IO中有两个转换流,这两个转换流用于实现将字节流转换为字符流,其中InputStreamReader将字节输入流转换成字符输入流,OutputStreamWriter将字节输出流转化成字符输出流。
我想问的是,java怎么没有把字符流转换成字节流的转换流呢?
作者:
939676244
时间:
2013-9-16 12:36
1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。
2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。
3.字符流已经很方便了,好像很少把字符转到字节的吧 = ={:soso_e121:}
作者:
1098918523
时间:
2013-9-16 12:43
以字符为导向的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)//使用指定字符集创建
作者:
斗胆潇洒
时间:
2013-9-16 14:46
是你搞错咯,
OutputStreamWriter就是字符流转字节流的桥梁啊
作者:
王广亚
时间:
2013-9-16 16:03
对于这个问题我也有过疑问,不过同学,你上面写错了,应该是
InputStreamReader是吧字节流转换成字符流
OutputStreamWriter是把字符流转换成字节流
为什么InputStreamReader是吧字节流转换成字符流,而没有读取时把字符流转换成字节流呢?
我经过思考明白:因为他是读取,在硬盘上存放的是字节,从硬盘上读取数据当然用的是字节读取方法了(当然读取文本文件是可以用字符流读取,但是他底层也是调用的字节读取方式),所以读取时是字节转换字符的桥梁。
同样反向道理OutputStreamWriter是把字符流转换成字节流也不言自明了吧。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2