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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马任雪刚 中级黑马   /  2012-5-19 17:31  /  1283 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么不用字符流拷贝媒体文件??????

5 个回复

倒序浏览
因为字符流只能拷贝文本文件,
媒体文件字符流是不能拷贝的,只能用字节流
回复 使用道具 举报
字符流一次处理2个字节
字节流一次处理1个字节,
音频文件、图片、歌曲,使用字节流
任何文件的储存形式都是以字节来储存的,字符在硬盘上是通过查字符编码转换成字节形式来存储,
在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列. 只是最后要按照
编码表转换来解读。
字节流但是不能直接处理Unicode字符,而字符流就可以。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
也可以用,不过字符流拷贝文件 需要查系统平台码表,如果查不到就可能使部分数据丢失

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
字符流拷贝文件,其实是一个编码和解码的过程。编码和解码的对象是字符,如果是媒体文件,就会出错。原因是Reader在读原文件时会对文件里的数据,按一张码表进行编码,但是一张码表对应的字符编码是有限,而媒体文件里数据比较复杂繁多,极有可能在码表里查不到对应的编码,这时它会找一个编码值与之相近的编码来代替。Writer在写文件时,会根据同样的码表,将Reader读入内存的数据写入到目标文件中,因为前面Reader读数据时,数据发现了变化,导致向目标文件写入数据和原文件不同。因此不能用字节流拷贝媒体文件。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
数据存储在硬盘上,都是以二进制形式存储的。其实字符流是在字节流基础上实现的,按照这个思路,是可以用字符流去读写媒体文件的。字符流在进行对源读写的时候,会进行编码和解码的过程,就是进行相应文件码表进行字符处理,当媒体文件中的数据通过编码解码后,在该对应的码表中,都能查找到的话,这样读写的数据将是完整的,就可以实现字符流对媒体文件的拷贝。但当媒体文件中的数据在码表中找不到相应码表值时,将会出现数据丢失,写入的时候会出现数据误写。这样讲得到不完整和不准确的媒体文件。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

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