首页 > 其他 > 详细

字节流复制mp3文件(带缓冲区)

时间:2014-07-23 12:16:26      阅读:365      评论:0      收藏:0      [点我收藏+]
//自定义的缓冲区

import java.io.*;


class  MyBufferedInputStream
{
    private byte[] buf = new byte[1024];

    private InputStream in;
   
    private int pos = 0, count = 0;

    MyBufferedInputStream(InputStream in){
        this.in = in;
    }
   
    /*
        一次读一个字节,从缓冲区字节数组中读。
    */
    public int myRead(){
        //通过in对象读取硬盘数据,并存储buf中
        if(count == 0){
            count = in.read(buf);
            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(){
        in.close();
    }
   
}

 

调用缓冲区:

import java.io.*;

class CopyMp3 
{
    public static void main(String[] args) throws Exception 
    {
        long start = System.currentTimeMillis();
        copy_1();
        long end = System.currentTimeMillis();

        System.out.println(end- start);
    }

    //通过字节流的缓冲区完成复制
    public static void copy_2() throws Exception{
        BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("c:\\1.mp3"));

        BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("c:\\2.mp3"));

        int by = 0;

        while((by = bufis.myRead()) != -1){
            bufos.write(by);
        }

        bufos.close();
        bufis.myClose();
    }
}

 

-----------------------

问题:

被复制的文件出现0字节

0000-0001

1111-1110

1111-1111

 

byte:-1 ---> int:-1

他会让前面加1,为了让前面补0,需要&255

 

最低四位&15 

1 1 1 1

最低八位&255

1111   1111

字节流复制mp3文件(带缓冲区),布布扣,bubuko.com

字节流复制mp3文件(带缓冲区)

原文:http://www.cnblogs.com/nophy/p/3862246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!