在应用程序关闭时刷新打印机

flush printwriter on application close

所以我有一个偶尔会写入文件的打印器("occasionally" 这里的意思是 "periodically after a certain number of specified events")。

现在,如果这些事件碰巧太少,当应用程序终止时,日志文件可能最终为空 (Ctrl + C)。

当然,我可以在每个 println 之后 flush,但这会破坏拥有非自动冲洗打印器的目的(这是唯一可以创建的类型)如果我想将 File 作为构造函数参数传递)。

在 Java 中是否有 onApplicationKill 的东西,我可以在应用程序终止时使用工具刷新编写器一次?或者检测当前线程何时被杀死?

您可以使用关闭钩子:

Runtime.getRuntime().addShutdownHook(new Thread() {
  public void run() {
      ...
      writer.flush();
  }
});

Ctrl+C

杀掉它应该也能用