バイトストリームコピーmp 3ファイル(バッファ付き)
2810 ワード
//カスタムバッファ
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(); } }
呼び出しバッファ:
-----------------------
質問:
コピーされたファイルに0バイトが表示されます
0000-0001
1111-1110
1111-1111
byte:-1 ---> int:-1
彼は前に1を加えて、前に0を補うために、&255が必要です.
最低4ビット&15
1 1 1 1
最低8ビット&255
1111 1111
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