Deletar arquivos temporários quando aplicação fecha

Olá…
Em minha aplicação preciso gerar e manipular uma série de arquivos temporários. Gostaria que os mesmos fosem deletados quando minha aplicação for fechada. Tentei usar o método deleteOnExit() da classe File, todavia não obtive resultado. Existe outra forma de fazer isso sem percorrer a pasta inteira deletando arquivos, ao fim da aplicação?

Obrigado…

Ola,

O que vc pode fazer é guardar em uma lista estes files que deverão ser deletados no final da aplicação, e cadastrar uma thread para rodar quando a JVM estiver para ser parada… assim:

Runtime.getRuntime().addShutdownHook(new Thread(){
    public void run(){
       // aqui vc pegaa tal lista com os arquivos a serem deletados e os delete...
    }
});

Bom, não sei se tem outro jeito, mas se você tem as referências para os arquivos e são poucos não custa nada fazer isso na mão.
Apenas para explicar, parece que o deleteOnExit() só funciona quando a JVM é finalizada, e de maneira normal.

[quote]public void deleteOnExit()

Requests that the file or directory denoted by this abstract pathname be deleted when the virtual machine terminates. Deletion will be attempted only for normal termination of the virtual machine, as defined by the Java Language Specification.[/quote]

Há uma série de bug reports para deleteOnExit, então é melhor fazer 2 coisas:

  • Feche sempre - use sempre try/finally. É o jeito que é mais “bem-comportado”.

  • Além disso, faça o que o BrunoCarlo lhe indicou.

Pra que deletar?
use o File.createTempFile(), (ou algo parecido com isso),
e coloque o deleteOnExit(), se deletar deletou…
senão , paciencia, de tempos em tempos o usuario vai limpar os temporarios
ou quando encher o hd o windows limpa tb
haehhaerhheaheahe