io中需要flush()刷新的流
只有输出流才需要flush()刷新,输入流都没有flush()方法
- 为什么没有输入流,因为所有输入流都没flush()方法。
flush()方法是定义在OutputStream和Writer这两个输出流的超类里面的方法,这是因为flush方法的作用和功能是向外做输出,将内存中的数据提交输出到外部文件当中,在BufferedWriter中,因为是对外做写操作,因此是有提交输出的flush方法的;而在BufferedReader对象中,因为它的作用是用来从外部读取文件内容到内存中,因此不存在向外做提交输出的操作,因此没有flush方法。
所以以下的流均包含了flush()方法:
FileOutputStream, 字节流输出流
FileWriter, 字符输出流
BufferedOutputStream, 缓冲字节输出流
BufferedWriter, 缓冲字符输出流
OutputStreamWriter, 转换输出流
ObjectOutputStream 序列化输出流
只有字节流输出流FileOutputStream和序列化输出流ObjectOutputStream不需要flush()就能直接写入文件
FileWriter字符输出流,BufferedOutputStream缓冲字节输出流,BufferedWriter缓冲字符输出流,OutputStreamWriter转换输出流都需要刷新flush方法才能写到文件上。
所以总结一下:如果是和Writer相关(内置缓冲区)或者是内置了缓冲数组的流都需要flush()这个过程才能写入文件
但是为了保险起见:以后只要涉及相关输出流,不论是字节流还是字符流,只要是OutputStream和Writer相关的,都加上flush()保险,
当然如果是直接close()就不用flush()了,但是保不齐以后增加代码会对数据进行操作,这个时候就容易出问题了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构