在java中关闭期间删除文件

时间:2009-09-07 10:20:34

标签: java

Hai我开发了一个独立的应用程序,当用户登录时,将创建一个日志文件,当应用程序关闭时,日志文件将被删除。但是当我关闭系统而没有关闭应用程序时,日志文件没有删除。我可以做什么来删除我的日志文件在关机或系统崩溃期间,当我的应用程序运行时关闭电源。有人帮我在关机期间删除日志文件

感谢你 Chaithu

3 个答案:

答案 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);
}

问候