字节缓冲流
- 缓冲流(过滤流):BufferedInputStream/BufferedOutputStream
- 提高I/O效率,减少访问磁盘的次数
- 数据存储在缓冲区中,flush是将缓冲区中的内容写入文件,也可以直接close
- 内部维护着一个字节输入/输出流
/**
* 字节缓冲流
* BufferedInputStream
* BufferedOutputStream
*/
public class bufferedStream {
public static void main(String[] args) throws Exception{
//创建字节流
FileInputStream fis = new FileInputStream("E:\\test.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
int data = 0;
/**
* BufferedInputStream自带一个8K缓冲区,read方法读取数据首先读入到缓冲区
* 下次读取时,先从缓冲区读取,缓冲区未找到再去访问内存
* 减少了内存的访问次数,提高了I/O效率
*/
while ((data=bis.read()) != -1){
System.out.print((char)data);
}
//使用FileInputStream自定义缓冲区
byte[] buf = new byte[1024];//定义一个1K的缓冲区
int count = 0;
//从缓冲区buf读
while ((count = fis.read(buf)) != -1){
System.out.println(new String(buf,0,count));
}
bis.close();
fis.close();
//创建输出字符流
FileOutputStream fos = new FileOutputStream("E:\\BufferedOut.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write("helloworld\n".getBytes());//写入了缓冲区
bos.flush();//刷新到硬盘
bos.close();
System.out.println();
System.out.println("finish");
}
}