黑马程序员技术交流社区

标题: 关于转换流的一点问题!!! [打印本页]

作者: 林豪    时间: 2012-5-15 18:01
标题: 关于转换流的一点问题!!!
我想问问转换流能不能用于拷贝MP3,AVI等多媒体文件呢?比如
BufferedReader bufw = new BufferedReader(new InputStreamReader("xxx.mp3");
还是说一定要文本文件才可以呢?
作者: 黑马罗坚    时间: 2012-5-15 18:30
BufferedReader bufw = new BufferedReader(new InputStreamReader(new FileInputStream("xxx.mp3"));

不能  一定要考文本文件  拷贝2进制文件有可能乱码或丢失   

其实用FileReader读 底层流就是用的FileInputStream完成的

FileReader只是个包装类里面没有任何的底层流操作 它继承InputStreamReader 流操作方法都在这个类 这个体系的输入流底层都是调用它完成  而它则是调用 InputStream体系的IO操作

FileReader只是把传进来的文件对象或文件名称字符串做为new FileInputStream()的参数 在把FileInputStream对象传递给父类

所以BufferedReader bufw = new BufferedReader(new InputStreamReader(new FileInputStream("xxx.mp3"));和
BufferedReader bufw = new BufferedReader(new FileInputStream("xxx.mp3");完成的功能时没有任何区别的  区别只在于一个可以指定字符集  一个把指定字符集的过程封装了用的是系统默认字符集。。。




作者: 林豪    时间: 2012-5-15 18:44
BufferedReader bufw = new BufferedReader(new FileInputStream("xxx.mp3");这句明显不行吧..
作者: 徐然    时间: 2012-5-15 18:57
其实这个问题把,你可以简单一点理解,你看InputStreamReader的构造方法就能明白
他接收的是个InputStream 字节流,你可以理解为就是把字节流转成字符流的
他没有接收字符流的构造方法,也就是说不能把字符流转成字节流
自然就明白他只能拷贝文本文件了

作者: 攻城狮    时间: 2012-5-15 22:27
注意In /Out转换流中什么是通向什么的桥梁··而你在用哪一个要操作的是什么类型 这个问题自然就想明白了
作者: 崔陈喜    时间: 2012-5-16 11:36
BufferedReader bufw = new BufferedReader(new InputStreamReader("xxx.mp3");
不能拷贝,原因是BufferedReader是封装好的InputStream.用于字符流之间的转换,不能转换字节可以用字节流
BufferoutputStream bs=new BufferOutputStream(new InputStream("xxx.mp3"))进行拷贝




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