目录
1. 介绍
BufferedInputStream:为另一个输入流添加了缓冲输入和支持mark和reset方法的功能
- 当创建BufferedInputStream时,将创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次有多个字节
- mark操作会记住输入流中的一点,并且reset操作会导致从最近的mark操作之后读取的所有字节在从包含的输入流中取出新的字节之前重新读取
- 缓存流读写时内部定义了一个缓存区,从而实现加快流的读写
BufferOutputStream:为另一个输入流添加了缓冲输出
2. 构造方法
BufferedIn/OutputStream(InputStream in/out) | 创建一个 BufferedInputStream并保存其参数,输入流 in ,供以后使用 |
BufferedIn/OutputStream(InputStream in/out, int size) | 创建 BufferedInputStream具有指定缓冲区大小,并保存其参数,输入流 in ,供以后使用 |
3. 示例代码
import java.io.*;
public class BufferCopy {
public static void main(String[] args) throws IOException {
long start=System.currentTimeMillis();
//创建文件流
File fi=new File("java.png");
File fo=new File("bufferTest.png");
//创建输入输出流及缓冲流
FileInputStream fis=new FileInputStream(fi);
FileOutputStream fos=new FileOutputStream(fo);
BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos);
//读写操作
byte[] buffer=new byte[10];
int len;
while((len=bis.read(buffer))!=-1){
bos.write(buffer,0,len);
}
//关闭外层流(内层输入输出流会随之自动关闭)
bis.close();
bos.close();
long end=System.currentTimeMillis();
System.out.println("复制的时间:"+(end -start));
}
}