public class CopyMp32 {
public static void main(String[] args) throws Exception {
long start=System.currentTimeMillis();
//copy(); //用时 一二百毫秒
copy_2();//用时十几毫秒
long end=System.currentTimeMillis();
System.out.println((end-start)+"毫秒");
}
public static void copy()throws Exception
{
//创建 BufferedInputStream 时即在内存中创建了一个内部缓冲区数组
//通过new FileInputStream("1.mp3")的read()方法读硬盘数据放到bis的缓冲区中BufferedInputStream bis=new BufferedInputStream( new FileInputStream("1.mp3"));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("2.mp3"));
int by=0;
//从缓冲区里取的
while((by=bis.read())!=-1)
{
bos.write(by);
}
bis.close();
bos.close();
}
public static void copy_2()
{
//创建 BufferedInputStream 时即创建了一个内部缓冲区数组
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
bis=new BufferedInputStream( new FileInputStream("1.mp3"));
bos=new BufferedOutputStream(new FileOutputStream("2.mp3"));
byte[] buf=new byte[bis.available()];
bis.read(buf);//从缓冲区里读,读取一定数量的字节到我又创建的缓冲区数组里,这种方法比较快,
bos.write(buf);//111毫秒
/* int by=0;
while((by=bis.read())!=-1)
{
bos.write(by); //223毫秒
}*/
}catch (Exception e) {
throw new RuntimeException("复制文件失败");
}
finally{
try{
if(bis!=null)
bis.close();
if(bos!=null)
bos.close();
}catch (Exception e) {
throw new RuntimeException("读取关闭失败");
}
}
}
}