感谢你 Chaithu
答案 0 :(得分:11)
如果VM未正确关闭,则可能无法启动已注册的shutdown hooks。因此,除了File.deleteOnExit()
(我假设您正在使用,您没有提供足够的详细信息)之外,您应该考虑简单地删除在应用程序启动时在应用程序的早期调用中创建的所有文件。 / p>
答案 1 :(得分:8)
当JVM使用File类的deleteOnExit()退出时,可以安排删除文件。但是,在系统崩溃等硬关机中,您无法确保完全删除日志文件。在这种情况下,您最好的选择是在下次启动应用程序时进行清理,如果这确实是一个很大的问题。
答案 2 :(得分:3)
你应该能够添加一个关闭钩子:
this example应该可以帮到你。简而言之,这是基本的代码:
class MyShutdown extends Thread {
public MyShutdown(SimpleHook managedClass) {
super();
this.managedClass = managedClass;
}
private SimpleHook managedClass;
public void run() {
System.out.println("MyShutDown thread started");
try {
managedClass.freeResources();
} catch (Exception ee) {
ee.printStackTrace();
}
}
}
public SimpleHook() {
// set up service termination hook (gets called
// when the JVM terminates from a signal):
MyShutdown sh = new MyShutdown(this);
Runtime.getRuntime().addShutdownHook(sh);
}
问候