这篇文章主要讲解了“Java IO的flush是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java IO的flush是什么”吧!
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站建设、成都外贸网站建设、林周网络推广、微信小程序、林周网络营销、林周企业策划、林周品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供林周建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
Java的IO是一个大知识点,
如果把它的知识点拆开来说的话估计能说一个星期,关于IO的体系可以看看下面这张图,
接下来我们从一段代码开始聊吧,先看看下面这段代码
public class Test { public static void main(String[] args) throws Exception { File file = new File("text.txt"); if(!file.exists()) { file.createNewFile(); } FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos); byte[] b = new byte[1024]; bos.write(b); bos.flush(); } }
代码中构造了一个缓冲流,然后往流里写入一个KB长度的数据,最后调用 flush()方法。
这是很简单的一段代码,最终的输出结果是会生成一个 1KB的 text.text文件。
但如果我们把最后一行注释掉的话
//bos.flush();
最终生成的 text.text大小会变成0.
这个结果是很显然的,不过如果我们把 flush()换成 close()的话,结果是不是还会是 0呢?
关于 flush
flush()这个东西,其实在很久以前的网络传输中就有了
那个时候为了效率,服务器和客户端传输数据的时候不会每产生一段数据就传一段数据
而是会建一个缓冲区,在缓冲区满之后再往客户端传输数据
有时候会有这样的问题,当数据不足以填充缓冲区,而又需要往客户端传数据,为了解决这个问题,就有了 flush的概念,将缓冲区的数据强迫发送。
回到上面的问题,如果把 flush换成 close是否可行呢
答案是可以的。
如果看源码就知道 BufferedOutputStream的继承关系
public class BufferOutputStream extends FilterOutputStream
BufferedOutputStream没有实现 close()方法,所以会直接调用 FilterOutputStream的 close(),而 FilterOutputStream的 close()方法会调用 flush()来输出缓冲区数据。
感谢各位的阅读,以上就是“Java IO的flush是什么”的内容了,经过本文的学习后,相信大家对Java IO的flush是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
本文名称:JavaIO的flush是什么
分享网址:http://lswzjz.com/article/pecpih.html