码迷,mamicode.com
首页 > 其他好文 > 详细

OutputStream之flush() · 李大白写点儿啥

时间:2020-02-18 18:17:47      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:java   刷新   目的   tst   public   syn   body   ams   str   

最近在做一个网络下载功能,I/O操作时,操作完OutputStream时写了flush(),目的是刷新输出流,将缓存写入物理设备。突然就想,这里是否需要flush()呢?

  • 我当时的代码:

    1
    2
    3
    4
    5
    6
    FileOutputStream outputStream = new FileOutputStream(file);
    // 写入流
    outputStream.write(buffer, 0, length);
    // flush()
    outputStream.flush();
  • FileOutputStream继承了OutputStream但是并没有覆写flush()方法,而OutputStreamflush()是一个空方法。

    1
    2
    3
    大专栏  OutputStream之flush() · 李大白写点儿啥 class="line">// OutputStream.java
    public void () throws IOException {
    }

    所以,直接调用OutputStreamflush()方法是没有意义的。

  • 再看一下BufferedOutputStream

    1
    2
    3
    4
    public synchronized void () throws IOException {
    flushBuffer();
    out.flush();
    }

    这个类才真的具有flush()功能。

  • 需要注意的是,flush()方法不能保证缓存的数据一定写入了物理设备,它只是发起一个操作,具体写入物理设备由操作系统实现。

OutputStream之flush() · 李大白写点儿啥

标签:java   刷新   目的   tst   public   syn   body   ams   str   

原文地址:https://www.cnblogs.com/lijianming180/p/12326957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!