黑马程序员技术交流社区

标题: 为什么我用自定义字节缓冲类复制媒体音乐文件这么慢 [打印本页]

作者: 黑马刘涛    时间: 2012-7-18 17:16
标题: 为什么我用自定义字节缓冲类复制媒体音乐文件这么慢
本帖最后由 黑马刘涛 于 2012-7-18 19:53 编辑
  1. package com.itcast.test;

  2. import java.io.IOException;
  3. import java.io.InputStream;

  4. class MyBufferedInputStream extends InputStream {
  5.         private InputStream in;
  6.         private byte[] buf = new byte[1024*4];// 缓冲区
  7.         private int pos = 0; // 字节数组指针
  8.         private        int count = 0; // 计数器,写入缓冲区中的字节数
  9.         MyBufferedInputStream(InputStream in) {
  10.                 this.in = in;
  11.         }
  12.         @Override
  13.         public int read() throws IOException {
  14.                 // TODO Auto-generated method stub
  15.                 if(count == 0) {
  16.                         pos = 0; // 缓冲区读完,清空继续写入
  17.                         count = in.read(buf);
  18.                         // 已到文件尾,返回-1
  19.                         if(count < 0)
  20.                                 return -1;
  21.                         byte b = buf[pos];
  22.                         pos++;
  23.                         count--;
  24.                         return b & 255; // int
  25.                 }
  26.                 else if(count > 0) {
  27.                         byte b = buf[pos];
  28.                         pos++;
  29.                         count--;
  30.                         return b & 255;
  31.                 }
  32.                 return -1;
  33.         }
  34.         public void myClose() throws IOException {
  35.                 in.close();
  36.         }
  37. }
复制代码
和毕老师写的一样,但是复制同样的文件,老毕写的那个只要300多毫秒,而我写的这个复制个文件慢的要死
原来是我没将数据写到缓冲区中,以上是修改后的代码:
发现一个新的问题:我写文件时刷新缓冲的输出流,比不刷新要慢很多。那么既然是这样,为什么buffferedOutputStream还要有flush方法。

捕获.PNG (25.93 KB, 下载次数: 29)

捕获.PNG

捕获.PNG (17.65 KB, 下载次数: 26)

捕获.PNG

作者: 李伟    时间: 2012-7-18 17:27
也许是您复制的文件比毕老师复制的那个文件要大很多吧
作者: 黑马刘涛    时间: 2012-7-18 17:35
差不多的,我用毕老师的程序复制同样的文件,只要327毫秒,差距巨大,求真相。
作者: 黑马刘涛    时间: 2012-7-18 18:44
顶一下。
作者: 黑马刘涛    时间: 2012-7-18 19:11
我用她的程序只要300毫秒
作者: 黑马刘涛    时间: 2012-7-18 19:13
我有他源码




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