保持输出流打开

时间:2018-11-12 07:25:36

标签: java io codenameone flush

我想知道如何处理代号为SELECT * FROM system:indexes 的代码,这些代码必须长时间保持打开状态。在很多地方,它们都是被编写的,试图在所有地方刷新流既不高效也不防错。所以我这样写:

OutputStream

应该确保每次写入后都会有刷新。除非应用程序关闭或类似,否则...。这就是为什么我要问。

  • 可以吗?有没有更好的方法来处理流冲洗?
  • 应用终止后,它们是否关闭然后正确关闭?
  • 我是否必须向“ main”类的private boolean needsFlush; private void write(byte[] data) throws IOException { assert Display.getInstance().isEdt(); out.write(data); if (!needsFlush) { needsFlush = true; Display.getInstance().callSerially(this::flush); } } private void flush() { try { out.flush(); needsFlush = false; } catch (final IOException e) { throw new RuntimeException(e); // UGLY! } } 添加流关闭代码?
  • 还是仅stop()
  • 那丑陋的试捕法呢?

1 个答案:

答案 0 :(得分:1)

我建议在stop()上关闭输出流,然后在start()上重新打开输出流。请注意,如果流指向FileSystemStorage,则可以使用CN的OutputStream os = openFileOutputStream(filePath, lengthOfFile);附加到流的末尾。

当应用程序发送到后台时,您需要在stop()上关闭。在这种状态下,应避免打开连接,因为它们可能会被操作系统突然终止。整个应用程序可能由于流向混乱而被杀死。

如果您在应用程序中具有后台支持,则应在每次需要时打开和关闭流。