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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我之前有copy过音频,用BufferedReader等,但是没试着打开过,今天突然看到这个问题,有点晕,,,帮忙解释下

4 个回复

倒序浏览
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的

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

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

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

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

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

码就会打不开的

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
itpower 发表于 2014-3-18 15:59
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理 ...

非常感谢!
回复 使用道具 举报
字符流处理的是文字  字节流处理的二进制数据
回复 使用道具 举报
你先弄清楚IO流中的体系结构,字节是最小单位,因此可以操作任何数据,而操作文本时为了方便便出现了字符流,在IO体系中,FIleWriter是InputStreamWriter的子类,这是一个便捷类,他的底层原理其实就是在使用字节流,同时查了你本地的字符编码,字符流操作纯文本没问题。但是在操作图片,音频视频时,他也会去查码表,这时如果没有对应的编码,他就会找个相近的字符来代替,最后的结果就是一堆乱码了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马