**BufferedInputStream和BufferedOutputStream这两个流内置了缓冲区流,即内部有一个字节数组。
这两个类没有我们用FileInputStream和FileOutputStream好用,因为它的内部每次读取8KB字节,不能修改,如果想读取10KB,就没有办法了。
**
1. 案例:拷贝音频文件
//1.创建缓冲输入流
FileInputStream fis=new FileInputStream("C:/Users/Administrator/Desktop/a/ghsy.mp3");
BufferedInputStream bis=new BufferedInputStream(fis);
//2.创建缓冲输出流
FileOutputStream fos=new FileOutputStream("C:/Users/Administrator/Desktop/a/ghsy1.mp3");
//3.输入流读数据,输出流写数据
int b=0;
//bis.read()方法每次内部会读8KB数据
while((b=bis.read())!=-1){
bos.write(b);//内部每次会写8KB数据
}
//4.关闭流,只用关缓冲流,不用关文件流,因为缓冲流内部会自动关文件流
bis.close();
bos.close();
2.BufferedOutputStream的flush()和close()的区别
flush()用来刷新缓冲区的,刷新后可以再次写入。
closfe()用来关闭释放资源,如果带缓冲区的流对象的close()方法,不但会关闭流,还会在关闭之前刷新缓冲区,关闭之后不能写入。