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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© baiiiu 中级黑马   /  2014-7-23 23:38  /  2804 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package answer;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;

  8. public class CopyMP3 {
  9.        
  10. private static final int SIZE = 1024;

  11.         /* 问题:
  12. * 将 大黄蜂的飞行.mp3文件 复制到 该文件夹下 并改名为 小黄蜂的飞行.mp3
  13. */
  14.         public static void main(String[] args) throws IOException {
  15.                 //1.关联文件,创建字节输入流读取该文件
  16.                 FileInputStream bis = new FileInputStream("E:\\大黄蜂的飞行.mp3");

  17.                 //2.创建目的文件,即小黄蜂的飞行.mp3,并创建字节输出流关联该文件
  18.                 File file = new File("E:\\小黄蜂的飞行.mp3");
  19.                 if(!file.exists())
  20.                         file.createNewFile();
  21.                
  22.                 FileOutputStream bos = new FileOutputStream(file);
  23.                
  24.                 //3.定义字节数组缓冲区
  25.                 byte[] buf = new byte [SIZE];
  26.                
  27.                 //4.读写操作
  28.                 int len = 0;
  29.                 while((len = bis.read(buf)) != -1){
  30.                         bos.write(buf);
  31.                 }
  32.                
  33.                 //5.关闭流
  34.                 bis.close();
  35.                 bos.close();
  36.                
  37.         }

  38. }
复制代码


该代码,之前用的是BufferedInputStream ,查看文档后发现FileInputStream直接也可以,求问:
在这个地方里用BufferedInputStream 有意义吗?

11 个回复

倒序浏览
查了文档,果然是,用了BufferedInputStream之后可以直接使用read()方法,使数据直接填充缓冲区内部数组中,牛牛牛。

看来有两种方法了。

用学到了点知识。
回复 使用道具 举报
一个用了缓冲区,BufferedInputStream
一个没用,FileInputStream

其实用了缓冲区,还得用FileInputStream,具体请参见BufferedIntputStream的构造方法,将FileInputStream当做参数传入。
回复 使用道具 举报
想要高效的时候就用BufferedInputStream
缓冲区 数据多了高效很重要
回复 使用道具 举报
buffer是缓存区,就是建立一个数组,每一个字符比如一个水滴的话,缓存区的功能就类似于杯子
回复 使用道具 举报
bufferedInputStream是对输入流的一种封装,具有缓冲的功能。它有readline()方法,不必再读一个写一个这么繁琐。再IO中,对字节的操作一般会用到BufferedInputStream。
回复 使用道具 举报
意义就是效率高了,还有BufferedInputStream是没有readLine()方法的,楼上要注意了
回复 使用道具 举报
付江涛 来自手机 金牌黑马 2014-7-24 08:54:28
8#
当需要提高效率的时候。
回复 使用道具 举报
阿磊 中级黑马 2014-7-24 09:01:07
9#
就是效率高了很多吧,FileInputStream也是有read()的方法的。这里只是多了一个缓冲区,提高了效率,不过Buffered一般是用在字符流上比较多一点,因为BufferedReader是有readLine()方法的 而BufferedWriter是有newLine()方法的。所以用在字符流上面是比较多见。
回复 使用道具 举报
提高效率
回复 使用道具 举报
就是提高效率用的 里面封装了个数组
回复 使用道具 举报
BufferedInputStream属于高效字节流,效率高啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马