因此,我有一个印刷机,偶尔会写入文件(这里的“偶尔”是指“在一定数量的指定事件之后定期”)。
现在,如果这些事件发生的次数太少,则在终止应用程序(Ctrl + C
)时,日志文件可能最终为空。
我当然可以在每个flush
之后加上println
,但这会破坏使用非自动冲洗式打印机的目的(如果我想通过File
,这是唯一可以创建的类型)作为构造函数参数)。
在Java中是否有onApplicationKill
的东西,当应用程序终止时,我可以使用它来冲洗写入器一次?还是有什么方法可以检测当前线程何时被杀死?
最佳答案
您可以使用关闭钩子:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
...
writer.flush();
}
});
如果您用
Ctrl+C
杀死它,它也应该起作用