public class CopyDemo2 {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("API.rar");
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos=new FileOutputStream("API02.rar");
BufferedOutputStream bos=new BufferedOutputStream(fos);
//byte[] data=new byte[1024*10];
long start=System.currentTimeMillis();
int d=-1;
/*
* 缓冲流内部维护着一个缓冲区(字节数组)
* bis.read()看似读取一个字节,实际上缓冲流会一次性通过fis读取一组字节,
* 并存入内部维护的字节数组中,然后将第一个字节返回。
* 这样当再次调用bis.read()读取一个字节时,会直接从内部的字节数组中将第二个字节返回
* 所以缓冲流还是通过提高一次性实际读取的字节量
* 减少实际读取次数提高的效率
* 缓冲输出流也是类似的效率
*/
while((d=bis.read())!=-1){
//fos.write(data,0,len);
bos.write(d);
}
System.out.println("共耗时:"+(System.currentTimeMillis()-start)+"ms");
System.out.println("复制完毕");
/*
* 关闭流只需要关闭最外层高级流即可
*/
bis.close();
bos.close();
}
}