1

私は時にはファイルに書き込むプリント・ライターを持っています(ここでは「特定の数の指定されたイベントの後に定期的に」という意味です)。アプリケーションの終了時にプリント・フラッシュを書き込む

これらのイベントが少なすぎると、アプリケーションが終了するとログファイルが空になることがあります(Ctrl + C)。

私は、もちろん、flushのすべてのprintlnた後、それは私がようFileを渡したい場合はとにかく作成することができる唯一の種類を非オートフラッシュPrintWriterを(持つの目的を台無しにしてしまう可能性がありコンストラクタ引数)。

JavaにはonApplicationKillがありますか?アプリケーションが終了するとライターを一度フラッシュできますか?または、現在のスレッドが強制終了されたときに検出するものはありますか?あなたがシャットダウンフックを使用することができます

+0

でそれを殺す場合にも動作するはずです([こちら]をご覧http://stackoverflow.com/questions/2975248/ java-how-to-handle-a-sigterm)! – ArcticLord

答えて

3

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

をあなたはCtrl+C

関連する問題