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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林豪 中级黑马   /  2012-5-15 18:01  /  2017 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想问问转换流能不能用于拷贝MP3,AVI等多媒体文件呢?比如
BufferedReader bufw = new BufferedReader(new InputStreamReader("xxx.mp3");
还是说一定要文本文件才可以呢?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
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");完成的功能时没有任何区别的  区别只在于一个可以指定字符集  一个把指定字符集的过程封装了用的是系统默认字符集。。。



评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
BufferedReader bufw = new BufferedReader(new FileInputStream("xxx.mp3");这句明显不行吧..
回复 使用道具 举报
其实这个问题把,你可以简单一点理解,你看InputStreamReader的构造方法就能明白
他接收的是个InputStream 字节流,你可以理解为就是把字节流转成字符流的
他没有接收字符流的构造方法,也就是说不能把字符流转成字节流
自然就明白他只能拷贝文本文件了
回复 使用道具 举报
注意In /Out转换流中什么是通向什么的桥梁··而你在用哪一个要操作的是什么类型 这个问题自然就想明白了
回复 使用道具 举报
BufferedReader bufw = new BufferedReader(new InputStreamReader("xxx.mp3");
不能拷贝,原因是BufferedReader是封装好的InputStream.用于字符流之间的转换,不能转换字节可以用字节流
BufferoutputStream bs=new BufferOutputStream(new InputStream("xxx.mp3"))进行拷贝
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马