黑马程序员技术交流社区

标题: 问一下字符流为什么不能操作图片?越详细越好!谢谢 [打印本页]

作者: darkpiece    时间: 2014-3-17 22:53
标题: 问一下字符流为什么不能操作图片?越详细越好!谢谢
我之前有copy过音频,用BufferedReader等,但是没试着打开过,今天突然看到这个问题,有点晕,,,帮忙解释下
作者: itpower    时间: 2014-3-18 15:59
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的

但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化

这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联

在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的

你用字符流处理音频文件就会出现解码错误问题,因为音频文件全都是二进制数据,而你使用字符流来复制的话,它会

根据虚拟机的编码形式对该音频文件进行处理,处理过后的数据就不是原来音频文件的二进制数据了,播放器解不了

码就会打不开的
作者: darkpiece    时间: 2014-3-18 16:43
itpower 发表于 2014-3-18 15:59
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理 ...

非常感谢!
作者: 三丶胖子    时间: 2014-3-19 15:52
字符流处理的是文字  字节流处理的二进制数据
作者: 张东健    时间: 2014-3-19 17:46
你先弄清楚IO流中的体系结构,字节是最小单位,因此可以操作任何数据,而操作文本时为了方便便出现了字符流,在IO体系中,FIleWriter是InputStreamWriter的子类,这是一个便捷类,他的底层原理其实就是在使用字节流,同时查了你本地的字符编码,字符流操作纯文本没问题。但是在操作图片,音频视频时,他也会去查码表,这时如果没有对应的编码,他就会找个相近的字符来代替,最后的结果就是一堆乱码了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2