Java 关闭应用程序时刷新printwriter
所以我有一个printwriter,它偶尔会写入一个文件(“偶尔”这里的意思是“在一定数量的指定事件之后周期性地”) 现在,如果这些事件碰巧太少,那么当应用程序终止时,日志文件可能会变成空的(Java 关闭应用程序时刷新printwriter,java,multithreading,interrupt,interrupt-handling,shutdown-hook,Java,Multithreading,Interrupt,Interrupt Handling,Shutdown Hook,所以我有一个printwriter,它偶尔会写入一个文件(“偶尔”这里的意思是“在一定数量的指定事件之后周期性地”) 现在,如果这些事件碰巧太少,那么当应用程序终止时,日志文件可能会变成空的(Ctrl+C) 当然,我可以在每次println之后flush,但这会破坏使用非自动flush printwriter的目的(如果我想将文件作为构造函数参数传递,这是唯一可以创建的类型) 在Java中是否有一个onApplicationKill——当应用程序终止时,我可以用它来刷新写入程序一次?或者在当前线
Ctrl+C
)
当然,我可以在每次println
之后flush
,但这会破坏使用非自动flush printwriter的目的(如果我想将文件
作为构造函数参数传递,这是唯一可以创建的类型)
在Java中是否有一个
onApplicationKill
——当应用程序终止时,我可以用它来刷新写入程序一次?或者在当前线程被终止时要检测的内容?您可以使用关机挂钩:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
...
writer.flush();
}
});
如果你用Ctrl+C
杀死它,它也应该能工作。看一看!