java中的io流问题

m0_37605715 2018-12-10 12:19:40
为什么Writer有flush()方法,而Reader没有flush()方法?
...全文
361 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
济南大飞哥 2018-12-20
  • 打赏
  • 举报
回复
flush是将缓冲区的内容写到文件中去,其实是从jvm内存到系统内存,再到硬盘,除非你用了“零拷贝”
路人甲_passerby 2018-12-17
  • 打赏
  • 举报
回复
这是因为flush方法的作用和功能是向外做输出,将内存中的数据提交输出到外部文件当中,在BufferedWriter中,因为是对外做写操作,因此是有提交输出的flush方法的;而在BufferedReader对象中,因为它的作用是用来从外部读取文件内容到内存中,因此不存在向外做提交输出的操作,因此没有flush方法。
weixin_42316006 2018-12-17
  • 打赏
  • 举报
回复
flush是将缓冲区的内容写到文件中去
m0_37605715 2018-12-11
  • 打赏
  • 举报
回复
引用 4 楼 qq_39936465的回复:
读写都是先写的缓存区,但是读的时候不会改变缓存区的数据,刷新没有意义,反而会浪费资源。
理解了,缓存区就是内存上的一块空间,写的时候需要刷到磁盘上,而读的时候不需要刷。
木瞳 2018-12-11
  • 打赏
  • 举报
回复
因为write写入需要将数据从内存写入到磁盘当中,而读取操作只是将数据读取到内存,并不需要再次将数据写回到磁盘,所以不需要flush操作
语承宥熙 2018-12-10
  • 打赏
  • 举报
回复
引用 4 楼 qq_39936465 的回复:
读写都是先写的缓存区,但是读的时候不会改变缓存区的数据,刷新没有意义,反而会浪费资源。



正解!flush()其实是刷新数据到磁盘上
qq_39936465 2018-12-10
  • 打赏
  • 举报
回复
引用 7 楼 m0_37605715 的回复:
[quote=引用 4 楼 qq_39936465的回复:]读写都是先写的缓存区,但是读的时候不会改变缓存区的数据,刷新没有意义,反而会浪费资源。

缓冲区就是内存中的一块地方是吧?写的时候我能理解,flush()刷到硬盘上;读的时候,读到缓冲区,供CPU使用,我这样理解,对吗?[/quote]
缓存区的读写速度高于存储区,刷新是一个缓存和存储区交换数据的过程效率低于直接读写缓存区,系统读写已经优化非必要无需刷新,因为写的时候有数据改变,需要及时数据时所以预留刷新命令。
m0_37605715 2018-12-10
  • 打赏
  • 举报
回复
引用 4 楼 qq_39936465的回复:
读写都是先写的缓存区,但是读的时候不会改变缓存区的数据,刷新没有意义,反而会浪费资源。
缓冲区就是内存中的一块地方是吧?写的时候我能理解,flush()刷到硬盘上;读的时候,读到缓冲区,供CPU使用,我这样理解,对吗?
m0_37605715 2018-12-10
  • 打赏
  • 举报
回复
缓冲区就是内存中的一块地方是吧?写的时候我能理解,flush()刷到硬盘上;读的时候,读到缓冲区,供CPU使用,我这样理解,对吗?
m0_37605715 2018-12-10
  • 打赏
  • 举报
回复
引用 3 楼 zhangpeterx的回复:
[quote=引用 2 楼 m0_37605715 的回复:] [quote=引用 1 楼 qq_39936465的回复:]读的时候又不改变数据,不需要刷新操作。
写的时候,先写到缓冲区当中,再调用flush( )方法刷到磁盘上;写的时候不也是先写到缓冲区当中吗?[/quote] 写的时候先写到缓冲区[/quote] 笔误,最后一句话应该是:读的时候不也是先读到缓冲区吗?
qq_39936465 2018-12-10
  • 打赏
  • 举报
回复
读写都是先写的缓存区,但是读的时候不会改变缓存区的数据,刷新没有意义,反而会浪费资源。
zhangpeterx 2018-12-10
  • 打赏
  • 举报
回复
引用 2 楼 m0_37605715 的回复:
[quote=引用 1 楼 qq_39936465的回复:]读的时候又不改变数据,不需要刷新操作。
写的时候,先写到缓冲区当中,再调用flush( )方法刷到磁盘上;写的时候不也是先写到缓冲区当中吗?[/quote] 写的时候先写到缓冲区
m0_37605715 2018-12-10
  • 打赏
  • 举报
回复
引用 1 楼 qq_39936465的回复:
读的时候又不改变数据,不需要刷新操作。
写的时候,先写到缓冲区当中,再调用flush( )方法刷到磁盘上;写的时候不也是先写到缓冲区当中吗?
qq_39936465 2018-12-10
  • 打赏
  • 举报
回复
读的时候又不改变数据,不需要刷新操作。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧