import java.io.*;
/*
自定义字节流缓冲区
复制mp3文件
1:定义数组
2:定义指针
3:定义计数器
*/
public class Practice_自定义字节流缓冲区 {
public static void main(String[] args) throws IOException {
CopyMp31 co=new CopyMp31();
long start=System.currentTimeMillis(); //记录开始拷贝
co.copy();
long end=System.currentTimeMillis(); //记录拷贝结束时间
System.out.println("拷贝完成:"+(end-start)+"毫秒");
}
}
class CopyMp31{
public void copy() throws IOException{
MyBufferedInputStream bufi=new MyBufferedInputStream(new FileInputStream("D:\\Documents\\My Music\\汤灿 - 今宵共举杯.mp3"));
BufferedOutputStream bufo=new BufferedOutputStream(new FileOutputStream("E:\\汤灿 - 今宵共举杯.mp3"));
int by=0;
while((by=bufi.myRead())!=-1){
bufo.write(by);
}
bufi.myClose();
bufo.close();
}
}
class MyBufferedInputStream{
private InputStream in;
private byte[] buf=new byte[1024];
private int pos=0; //定义指针
private int count=0; //定义计数器,用于记录读取的个数.
MyBufferedInputStream(InputStream in){
this.in=in;
}
public int myRead() throws IOException{
if(count == 0){
count=in.read(buf);//通过in对象读取硬盘上的数据,并存储在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() throws IOException{
in.close();
}
}
原文件是3.07MB,为什么复制后的文件只有4KB??? 请大侠们帮帮忙!!!小弟在此谢过!
|