2009-09-07 3 views
1

Hai У меня разработано автономное приложение, в котором при входе пользователя в систему будет создан файл журнала, и когда приложение будет закрыто, файл журнала будет удален. Но когда я выключу систему с помощью закрытие приложения, файл журнала не получает delete.What я могу сделать, чтобы удалить файл журнала во время выключения или сбоя системы, когда отключается питание, когда мое приложение запущено. Может кто-то помочь мне удалить файл журнала во время выключениеУдаление файла во время выключения в java

Поблагодарив вы Chaithu

+0

Это зависит от ОС, не так ли? – Burkhard

+0

Да, его окна os – chaithu

+1

Итак, вы хотите что-то сделать, когда власть внезапно провалится? Если вы не используете ИБП, нет никаких шансов, что это сработает. –

ответ

11

Если виртуальная машина не выключается он не может начать регистрацию shutdown hooks. Таким образом, помимо File.deleteOnExit() (который, как я полагаю, вы используете, вы не даете достаточно подробностей), возможно, вам также стоит подумать о простом удалении всех файлов, созданных вами при более ранних вызовах вашего приложения, когда ваше приложение запускается.

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

С уважением

+0

Крюки остановки могут не выполняться, когда приложение не останавливается чисто (например, в случае сбоя системы или принудительного завершения процесса). – Jesper

8

Вы можете запланировать файл для удаления, когда JVM выходит с deleteOnExit() класса File. Однако при жестком отключении, например, сбое в системе, вы ничего не можете сделать, чтобы файл журнала был удален чисто. В этом случае лучшим вариантом будет очистка при следующем запуске приложения, если это действительно большая проблема.

Смежные вопросы