1

所以我有一個printwriter,偶爾會寫入一個文件(「偶爾」,這裏的意思是「定期在一定數量的指定事件之後」)。應用關閉時沖洗printwriter

現在,如果這些事件數量太少,當應用程序終止時日誌文件可能最終爲空(Ctrl + C)。

我當然可以,flush的每println之後,但會破壞具有非自動刷新PrintWriter的(這是可以無論如何,如果我想通過一個File作爲創建唯一的一種目的構造函數參數)。

是否有onApplicationKill-Java中的東西我可以在應用程序終止時清理一次寫入器。或什麼東西來檢測當前線程被殺害?

+0

殺死它還應努力看一看[這裏](http://stackoverflow.com/questions/2975248/ Java的如何對手柄-A-SIGTERM)! – ArcticLord

回答

3

您可以使用一個關閉鉤子:

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

,如果你用Ctrl+C