黑马程序员技术交流社区

标题: io问题 [打印本页]

作者: 钟伟杰    时间: 2013-5-7 01:12
标题: io问题
本帖最后由 钟伟杰 于 2013-5-7 11:09 编辑

BufferedReader中有readLine(),对于读取数据是很方便的,

能像下面一样关联MP3文件,进行文件的复制吗?
BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream(1.mp3)));

BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(1_copy.mp3)));


作者: 孙金鑫    时间: 2013-5-7 01:26
  1. 显然不行!!!
  2. public String readLine()
  3. { }
  4. readLine的返回值时String类型的,.mp3读取的是字节流,byte。。。。。
复制代码

作者: Jacky_Chen1990    时间: 2013-5-7 01:31
你是想用字符流的readline来复制mp3么。不可以的,即使复制了,也是不完整的。复制媒体文件就用字节流是最好的,包上Buffered缓冲区提高效率即可。
作者: zms2100    时间: 2013-5-7 07:51
(⊙o⊙)…..............能说LZ很大胆,呵呵,可能LZ还没看到老师那个知识点后面的视频。
我记得不能用字符流操作非字符数据的原因是: 字符流会将每次读取到的N个字节在编码表中寻找一个对应的字符(如果没有找到,它就会找个字节类似的字符,这就是不能的原因。)
所以在读取转换成字符流时文件的字节代码有些可能发生改变,而在输出时又是直接就能转成字节流的(没有那个寻找匹配的过程),所以复制的文件就可能在某个地方缺少错误。
(极品少数时候,LZ的复制可能会成功,但是多数时候即非字符文件越大,出现错误的几率就越多)
作者: 钟伟杰    时间: 2013-5-7 11:09
zms2100 发表于 2013-5-7 07:51
(⊙o⊙)…..............能说LZ很大胆,呵呵,可能LZ还没看到老师那个知识点后面的视频。
我记得不能用字符 ...

非常感谢,解决了我的疑问。
作者: zms2100    时间: 2013-5-7 13:05
钟伟杰 发表于 2013-5-7 11:09
非常感谢,解决了我的疑问。

客气..........O(∩_∩)O~,好好加油。




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