使用byte字节数组做临时的缓存区复制文件,效率较高。
import java.io.*;
public class ReadFile{
public static void main(String[] args){
try{
File inFile=new File("F:/Program Files/Java/jdk1.7.0_55/src.zip");
File outFile=new File("C:/work/src.zip");
FileInputStream fis=new FileInputStream(inFile);
FileOutputStream fos=new FileOutputStream(outFile);
//建议使用2的n次方,这样计算机的处理效率相对会高一些。
//这里用byte数组纯粹的申请内存
byte[] tmp=new byte[8192];
int length=fis.available()/8192;
for(int i=0;i<length;i++){
fis.read(tmp);
fos.write(tmp);
}
//处理最后剩下的内容
int size=fis.read(tmp);
//第一个参数是byte数组形成的临时缓冲区
//第二个参数是从数组的哪里开始向文件写
//第三个参数是写多少
fos.write(tmp,0,size);
}catch(Exception e){}
}
}
可以看这篇文章,挺详细的https://blog.csdn.net/xukongjing1/article/details/79309622