当我们进行数据读写时,是要从硬盘中读取,从硬盘读取速度时比较慢的。但你创建缓存流时就会创建一个缓存区,从缓存区中的速度还是比较快的。
开始读取数据时,会先看缓存区中是否有数据,如果没有,就先把硬盘中的数据读到缓存区里,缓存区的大小为8192。然后再把缓存区的数据读到中转站里。中转站中数据也会写到缓冲区内,在一次性的写到硬盘中。这样可以极大的减少读写硬盘的次数,从而提高读写速度。
4.何时将缓冲区的内容,写到硬盘中
(1)缓存区满时,会自动的写入硬盘(从缓存区写入硬盘的过程也叫刷新)
(2)关闭流时,也会自动刷新
(3)手动刷新bos.flush();只有输出缓存流有flush()的方法。
原理图:
BufferedOutputStream字节缓存输出流
java.io.BufferedOutputStream extends OutputStream
BufferedOutputStream:字节缓冲输出流
继承自父类的共性方法:
-public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
-public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
-public void write(byte[] b ) :将b.length字节从指定的字节数组写入此输出流。
-public void write(byte[] b,int off,int len) :从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。
-public abstract void write(int b) :将指定的字节输出流。
构造方法:
BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流
参数:
OutputStream out:字节输出流
我们可以传递FileOutputStream,缓冲流会给FileOutputStream增加一个缓冲区,提高FileOutputStream的写入效率
int size :指定缓冲流内部缓冲区的大小,不指定默认
使用步骤:(重点)
1.创建FileOutputStream对象,构造方法中绑定要输出的目的地
2.创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率
3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中
4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中
5.释放资源(会先调用flush方法刷新数据,第4部可以省略)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)