A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马王宁 中级黑马   /  2012-12-4 15:42  /  1592 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

io操作的flush()方法有什么作用啊?在close()方法之前,需要先flush()吗

评分

参与人数 1技术分 +1 收起 理由
杨千里 + 1 毕老师的视屏里 讲的很清楚 请多看看 毕老.

查看全部评分

3 个回复

正序浏览
在java的io操作的是底层的字节流对象。设备与设备之间传递的是一个个字节,也就是0 或1这样的数字。在以前就只能这样一个一个地传递,后来为了提高性能,将要传送的数据放进一个数组中,将数组中的数据一次性的传过去。不过当我们写好了数组中的数据应该使用flush方法,将数组中的数据写入流通道中。,这样才能真真将数据传过去。所以很多类对象在close方法里面会自动加上刷新方法。以保证在关闭流之前,数据已经写完了。但是后来出现一些包装类,比如Buffered等,那就必须我们人工手动的在关闭流之前将数据刷新。
回复 使用道具 举报
流数据是先放进内存缓冲区中的,而默认情况下,只有缓冲区满了才会将缓冲区数据取走,但是有往往我们需要的数据,并不一定能够将缓冲区填满,所以为了避免数据丢失,我们会手动将缓冲区数据取出,即flush()方法。而close()方法是关闭流,默认的是关闭流之前执行一次flush()操作,如果数据很少,取一次就行那么调用一次close()方法就可以了。
回复 使用道具 举报
flush()有刷流的作用,
close()关闭流,在关闭之前会先刷流,所以在close()方法之前,需要先flush()。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马