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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张旺达 高级黑马   /  2013-5-26 20:03  /  1456 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输入/输出流体系中提供了两个转换流,这两个转换流用于实现将字节流转换成字符流,其中InputStreamReader将字节输入流转换成字符输入流,OutputStreamWriter将字节流输出转换成字符流输出。问:为什么没有把字符流转换成字节流的转换流呢??

3 个回复

倒序浏览
字符流  和 字节流   ...   我隐约记得  是因为字节流读取有些文件效率低   然后出的字符流,字符流主要用于操作文本数据。
字节流一般是操作图片文件.音频文件 等等之类的..    好像老毕原来说过 有的字符流方法还是以字符流为原型 .. 像ReadLine  这些..
用字节流复制文本文件(txt)时都是把一个汉字拆成两个字节(因为一个字符等于两个字节)。
举例来说为什么不能字符转字节   就像 一个盆 和一个碗   你能把碗的水倒盆里  但是你把盆里的水倒碗里能成吗?
(以上的我不敢保证  如果有错请大家快速指正, 以免误导他人。。
回复 使用道具 举报
建议楼主去看下api文档,里面清清楚楚的写了;
字节流,字符流互相转换细节和底层原理都有;
一句话:计算机操作的所有数据都是字节,即一串的0011;
出现字符流是为了操作字符更加高效;清楚了这两点,
一切都很好解释。。。
黑马云青年为你解答。。。。
回复 使用道具 举报
字符流也可以转换为字节流!
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化
这两个之间通过   InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联
在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的

在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public   String(byte   bytes[],   String   charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[]                 String.getBytes(String   charsetName)
也是一样的道理 ,charsetName就是指编码格式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马