所以,FileWriter和BufferedWriter的真正区别在哪

所以,FileWriter和BufferedWriter的真正区别在哪

网上关于两者区别的内容挺多的,但很多表述都及其不准确,很容易被误导。不过好在也有些厉害的博主做了很细致的分析,这里我总结了一下,加上自己的思考,这里贴出“标准答案”,欢迎讨论!

  1. FileWriter和BufferWriter写入的都是字符流
  2. FileWriter和BufferWriter都有缓冲区,FileWriter的缓冲区大小是8192个字节,BufferWriter缓冲区大小是8192个字符(说两者的区别在于BufferWriter有缓冲区而FileWriter没有缓冲区的是在放屁!)
  3. FileWriter和BufferWriter调用write方法时都没有真正往硬盘里写数据,存入的都是缓冲区,只有调用flush或者close时才会刷新缓冲区并写入硬盘
  4. FileWriter每次调用write()方法,就会调用一次OutputStreamWriter中的write()方法,而BufferedWriter只有在缓冲区满了才会调用OutputStreamWriter中的write()方法。仔细看OutputStreamWriter方法介绍,它是用于给字符转码的,并且会在缓冲区累积。这两句话是重点了,FileWriter每调用一次write就会进行一次转码,而BufferedWriter只有在缓冲区满了才会转码,这才是BufferedWriter高效的真正原因;在缓冲区累积则代表他们并不是write一次就输出,而是flush或者close才进行写入硬盘(有些人说FileWriter每执行一次write就进行一次写操作,而BufferWriter缓冲区满了才执行写操作也是在放屁!)

在这里插入图片描述

有两篇很好的博客可以看一看
https://www.cnblogs.com/xjyh/p/4529809.html
https://www.jianshu.com/p/49b23f49814c

  • 26
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值