不带字节缓冲区的文件复制
public static void main(String[] args) throws IOException {
//字节数组大小
int length = 1024;
FileInputStream fis = new FileInputStream("C:\\Users\\asus\\Desktop\\yuanwenjian .pdf");
FileOutputStream fos = new FileOutputStream("C:\\Users\\asus\\Desktop\\co.pdf");
long begin = System.currentTimeMillis();
int len = 0;
byte[] bytes = new byte[length];
while ((len = fis.read(bytes)) != -1){
fos.write(bytes,0,len);
}
fos.close();
fis.close();
long end = System.currentTimeMillis();
System.out.println("耗时:"+(end - begin)+"ms");
}
带字节缓冲区的文件复制
public static void main(String[] args) throws IOException {
//缓冲区大小
int length1 = 100000;
//字节数组大小
int length2 = 100000;
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\asus\\Desktop\\源文件 .pdf"),length1);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Users\\asus\\Desktop\\copy.pdf"),length1);
long b = System.currentTimeMillis();
int len = 0;
byte[] bytes = new byte[length2];
while ((len = bis.read(bytes)) != -1){
bos.write(bytes,0,len);
}
//先释放输出,后释放输入.
bos.close();
bis.close();
long e = System.currentTimeMillis();
System.out.println("耗时:"+(e-b)+"ms");
}
随着字节数组和缓冲区大小的改变,复制效率也会跟着改变.