BufferedInputStream的缓冲区为8K,下面是源码截图:8*1024=8192
我们测试的时候将每次读取的字节数组定义为9k.
不多说直接上代码运行:
package com.yellowstar.demo2;
import java.io.*;
public class Demo1 {
public static void main(String[] args) throws IOException{
test("D:\\_IDEA\\ideaIU-2018.2.2.exe","C:\\Users\\YellowStar\\Desktop\\tt\\3.exe");
}
//高效输入流,一次输入超过8k
public static void test(String path,String dest) throws IOException {
//创建高效字节输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
//创建高效字节输出流
BufferedOutputStream bos= new BufferedOutputStream(new FileOutputStream(dest));
byte[] b = new byte[1024*9];//这里定义一个9k大小的字节数组
int len;
while((len=bis.read(b))!=-1){
bos.write(b,0,len);
}
bos.close();
bis.close();
}
}
测试结果可以运行
我的理解:
当字节流读取完9k的byte数组之后,将其中的8k存入bufferedInput的缓冲区中写入文件,剩下的1k再来存储到缓冲区。