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


    最近在做一个网络下载功能,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()方法不能保证缓存的数据一定写入了物理设备,它只是发起一个操作,具体写入物理设备由操作系统实现。
  • 相关阅读:
    AlphaToCoverage solution
    PhyreEngine3.8 MSAA resolution
    渲染错误
    tomcat
    Jupyter
    Flask
    Highcharts20151130
    CodeMirror
    响应式
    import
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12326957.html
Copyright © 2020-2023  润新知