io中需要flush()刷新的流

分类: 365BT体育app 发布时间: 2025-10-23 02:44:43 作者: admin 阅读: 607
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()了,但是保不齐以后增加代码会对数据进行操作,这个时候就容易出问题了

相关文章

证件照尺寸大全 – 常见标准证件照片尺寸大小及像素参考表
帝王宝盒免邀请码版
<大敦煌>观后感:千年沧桑与辉煌
CNY 兑 JPY - 将人民币兑换成日元