本帖最后由 陈培果 于 2014-5-13 08:47 编辑
- /*
- 自定义字节缓冲区,复制Mp3
- */
- import java.io.*;
- class MyBufferedInputStream
- {
- private InputStream in;
- private byte[] buf=new byte[1024];
- private int pos=0,count=0;
- MyBufferedInputStream(InputStream in)throws IOException
- {
- this.in=in;
- }
- //一次读一个字节,从缓冲区(字节数组)获取。
- public int myRead()throws IOException
- {
- //通过in对象读取硬盘上的数据,并存到buf中
- if (count==0)
- {
- count=in.read(buf);//调用myRead方法,网buf中装数据,返回个数count=1024
- if (count<0)
- return -1;
- pos=0;
- byte b=buf[pos];//取数组中第一个元素
- count--;
- pos++;
- return b;//返回一个字节
- }
- else if(count>0)
- {
- byte b=buf[pos];//取数组中第一个元素
- count--;
- pos++;
- return b;//返回一个字节
- }
- return -1;
-
- }
- public void myClose()throws IOException
- {
- in.close();
- }
- }
- class MyBufferedInputStreamDemo
- {
- public static void main(String[] args) throws IOException
- {
- long start=System.currentTimeMillis();
- copy_1();
- long end=System.currentTimeMillis();
- System.out.println((end-start)+"毫秒");
- }
- public static void copy_1() throws IOException
- {
- MyBufferedInputStream bufis=new MyBufferedInputStream(new FileInputStream("c:\\0.mp3"));
- BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("c:\\2.mp3"));
- int by=0;
- System.out.println("第一个字节:"+bufis.myRead());
- while ((by=bufis.myRead())!=-1)
- {
- bufos.write(by);
- }
- bufos.close();
- bufis.myClose();
- }
- }
- /*
- 运行程序第二次,复制Mp3第二次时,
- 我按照毕老师的程序写的,毕老师的运行结果是:
- 第一个字节:-1
- 0毫秒
- 为什么我的是:
- 第一个字节:73
- 3毫秒
- 求师兄们解答一下
- */
复制代码
|