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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 远行的人2号 中级黑马   /  2014-5-11 23:54  /  1440 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 远行的人2号 于 2014-5-12 14:41 编辑

字符流为何不能用作复制拷贝图片,而字节流却可以?

5 个回复

倒序浏览
这位同学,这个我个人做过测试的,感觉这个问题可以这样考虑。
首先字符流操作的是字符,既然字符流,就有对应的解码规则,就是把二进制转换为我们看得懂的文字,这是需要对应的码表的规则,字节流呢,操作的直接就是二进制的字符串
然后呢,既然字符流是吧二进制串转为我们看得懂的文字,那么反向的过程就是把我们看得懂的文字转为机器识别的二进制码,这也是需要码表的转换支持,对吧,了解了这两个基本知识后,下面就能说我们的问题了。
结论马上要出来了,就是在我们用字符流操作图片时,不同的码表操作时,有可能是两个两个转换(如GBK),有的是三个三个识别为一个,有个是不定长的识别(如UTF-8),假如在对应的码表中有这样的规则,那么是可以这样转换的,假如在码表中不存在这样的对应的规则,那么有可能会用码表中相近的来表示,这就破坏了字节的信息,即破坏了图片。另外,图片中可能会恰好在中间存在-1这样的标记,假如在用字符流时,恰好单独需要编码,这就识别为字符串的终止符了。这会导致拷贝提前终止。希望能帮到你
回复 使用道具 举报
你可以看看字节流和字符流的有关区别:

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,

而字节流处理单元为1个字节,操作字节和字节数组;

字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好;

如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好 ;

字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;

不知道这么说能解决你的疑问不



回复 使用道具 举报
主要是涉及到编码解码的问题.
图片存储在电脑中,是用二进制位来表示的,用字节流当然没问题
回复 使用道具 举报
pandapan 发表于 2014-5-12 05:12
这位同学,这个我个人做过测试的,感觉这个问题可以这样考虑。
首先字符流操作的是字符,既然字符流,就有 ...

谢谢指点
回复 使用道具 举报
247033993@qq.co 发表于 2014-5-12 10:48
你可以看看字节流和字符流的有关区别:字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或 ...

解释得好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马