字节输出缓冲流BufferedOutputStream

假设a.txt中有abcd四个字符,如果我们想要把这四个字符全部读取完的话,那么我们无论是字符输入流还是字节输入流,通过read这个方法读取的时候,会通过JVM虚拟机调用read这个方法,然后通过JVM虚拟机来调用OS(系统)中的读取方法,然后再通过OS系统区调用到我们的第一个字符a,然后再原路返回,这个过程十分繁琐,如果我们要把a.txt中的字符都读取完毕的话那么我们需要执行五次像这样的操作,效率十分低下

由此我们引入了缓冲流

缓冲流的基本原理

给基本的字节输入流增加一个缓冲区(也就是数组)提高基本的字节输入流的读取效率

缓冲流原理图示

先展示不使用缓冲流的原理图
在这里插入图片描述
可以看出这样频繁的调用jvm和系统资源效率十分的低下

然后是使用缓冲流的原理
在这里插入图片描述

BufferedOutputStream的构造方法

  1. BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流
  2. BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流

参数

  1. OutputStream out:字节输出流,我们可以传递FileOutputStream,缓冲流会给FileOutputStream增加一个缓冲区,提高FileOutputStream的写入效率
  2. int size:指定缓冲流内部缓冲区的大小,不指定的话就是默认大小

BufferedOutputStream的使用方法

  1. 创建FileOutputStream对象,构造方法中绑定要输出的目的地
  2. 创建BufferedOutputStream对象,在它的构造方法当中传入FileOutputStream对象,提高FileOutputStream对象的 效率
  3. 使用BufferedOutputStream对象中的write方法,把数据写入到内部缓冲区中去
  4. 使用BufferedOutputStream对象中的flush方法,把缓冲区中的数据刷新到文件当中
  5. 释放资源(会自动调用flush方法把缓冲区中的数据刷新到文件当中,如果写了第五步那么可以省略第四步)

举例示范

 public static void main(String[] args) throws IOException {
//        1. 创建FileOutputStream对象,构造方法中绑定要输出的目的地
        final FileOutputStream fos = new FileOutputStream("d:\\c.txt");
//        2. 创建BufferedOutputStream对象,在它的构造方法当中传入FileOutputStream对象,提高FileOutputStream对象的 效率
        final BufferedOutputStream bos = new BufferedOutputStream(fos);
//         3. 使用BufferedOutputStream对象中的write方法,把数据写入到内部缓冲区中去
        bos.write("我把数据写入到内部缓冲区当中".getBytes());
//        5. 关闭资源并且将缓冲区中的数据刷新到文件当中
        bos.close();
    }

得到的结果如下:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值