下面是我學習過程中總結的幾個復制文件的方法,代碼如下:
/** *?復制媒體文件,該例子是復制1.mp3文件,列出了四種方式. */import?java.io.BufferedInputStream;
import?java.io.BufferedOutputStream;
import?java.io.FileInputStream;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.io.IOException;
public?class?BufferedStreamCopyFiles?{
public?static?void?main(String[]?args)?throws?IOException?{
/**
?*?***有四個方法,但建議用demo1,demo2;因為demo3需要創建數組,?如果文件大,光創建數組就需要很多時間;demo4壹定也不要用,
?*?效率非常慢.
?*/
demo1();
demo2();
demo3();
demo4();
}
public?static?void?demo1()?throws?FileNotFoundException,?IOException?{
FileInputStream?fis?=?new?FileInputStream("d:\\1.mp3");
FileOutputStream?fos?=?new?FileOutputStream("d:\\01.mp3");
int?len?=?0;
byte[]?buf?=?new?byte[1024];
while?((len?=?fis.read(buf))?!=?-1)?{
fos.write(buf,?0,?len);
}
fis.close();
fos.close();
}
public?static?void?demo2()?throws?IOException?{
FileInputStream?fis?=?new?FileInputStream("d:\\1.mp3");
BufferedInputStream?bufis?=?new?BufferedInputStream(fis);
FileOutputStream?fos?=?new?FileOutputStream("d:\\02.mp3");
BufferedOutputStream?bufos?=?new?BufferedOutputStream(fos);
int?len?=?0;
while?((len?=?bufis.read())?!=?-1)?{
bufos.write(len);
}
bufis.close();
bufos.close();
}
//?不建議這種方式
public?static?void?demo3()?throws?IOException?{
FileInputStream?fis?=?new?FileInputStream("d:\\1.mp3");
FileOutputStream?fos?=?new?FileOutputStream("d:\\03.mp3");
byte[]?buf?=?new?byte[fis.available()];
fis.read(buf);
fos.write(buf);
fos.close();
fis.close();
}
public?static?void?demo4()?throws?IOException?{
FileInputStream?fis?=?new?FileInputStream("d:\\1.mp3");
FileOutputStream?fos?=?new?FileOutputStream("d:\\04.mp3");
int?ch?=?0;
while?((ch?=?fis.read())?!=?-1)?{
fos.write(ch);
}
fos.close();
fis.close();
}
}