バイトストリームコピーmp 3ファイル(バッファ付き)


//カスタムバッファ
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;}/*1バイトずつ読み、バッファバイト配列から読みます.*/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が必要です.
 
最低4ビット&15
1 1 1 1
最低8ビット&255
1111   1111