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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kj1989 中级黑马   /  2014-3-8 15:34  /  1904 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kj1989 于 2014-3-10 21:02 编辑

我们知道一般字节流用于文字处理,字符流用于图片处理,那么如果用字节流对文字进行处理可以吗?会发生什么样的情况呢?字符流和字节流在处理对象时,什么内在的特性和区别决定了两者的用途?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

4 个回复

正序浏览
字符流去处理这个文件,很有可能会导致问题。
这种文件,只应该用字节流去处理。只有文本文件,才可以用字符流处理。

原因在于:
字符流拷贝文件,从编解码的角度来看,其本质就是如下图的动作:

在字节转字符的过程中,如果遇到编码表中存在的字符,将能够正确解码。


但是当遇到编码表中不存在的字符时,部分解码器会找它认为相近的当前编码表中能识别的字符去替代。
这样就导致解码后,字符对应的字节码已经发生了变化。
当你再次按照编码表编码成字节时,部分编码后的字节将与之前的字节产生差异。
也就是说,数据会出错。


总结一句话,就是:不能,因为在编码过程中,会引入错误。


这个具体,你可以看一下毕向东老师的JAVA基础视频:第21天 的 第06、07、08个视频。(记不清哪个是了,不过这三个里面,肯定有一个讲过,反正也不长,都看一下吧)

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
楼主,你说反了,字节流字节和字符都能处理,字符流只能处理字符
字节流包括:音乐+视频+图片等等。
字符流:文本文件等
回复 使用道具 举报
文件在硬盘上都是二进制,都是字节,图片是字节流。对汉字进行处理时,一般需要用到转换流,就是将字符用字节写出.
回复 使用道具 举报
字节流的操作对象就是一串比特位,不涉及数据的类型、格式等问题,因而可以处理任何对象。也正因如此,通过字节流读取的数据就是一串比特位,需要我们自己把它“翻译”成可以看懂的形式。比如字符在 Java 中占用两个字节,采用 UTF-16 编码方案,所以如果通过字节流读取字符文件,就需要我们自己将这一串比特位按编码方案的规则翻译成字符,这当然是一个很痛苦的过程了。这时字符流就出现了,字符流会很贴心地按我们的要求把字节转换成字符,因此通过字符流就可以直接读取字符文件的内容了~

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

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