2016-03-05 53 views
1

如果我为某些写入操作创建临时文件,有没有什么方法可以在程序中指定在程序终止时自动删除它。程序终止时临时文件删除

下面是用于创建文件的过程。

File tmp = File.createTempFile("foo", "tmp"); 
System.out.println("Your temp file is " + tmp.getCanonicalPath()); 
//doing something with the temporary file 
writeDataInTemp(tmp.getCanonicalPath()); 
+1

你使用任何框架或容器来运行你的代码?通常,框架和容器提供了一些关闭钩子,使用它可以在程序终止之前询问容器该做什么。在普通的Java中,你将不得不在'@ PreDestroy'方法中编写删除代码 – Prashant

+0

没有使用框架。你所说的删除代码是一些现有的函数? – Aajan

+0

在Predestroy示例中,我可以看到几种方法:http://www.programcreek.com/java-api-examples/javax.annotation.PreDestroy&ei=ZxjNmOrN&lc=en-IN&s=1&m=884&host=www.google.co.in&ts= 1457150499&sig = ALL1Aj7uy_LtEkUDTRqGX1wXWZ-mXKvzLw – Aajan

回答

1

使用关机钩和自己做: https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)

(这可能是库和框架是如何做到这一点它可以让你定义在运行时的JVM终止功能。)

你需要建立一个所有临时文件的列表(我建议你有一个很好的getTemporaryFile()函数,它可以让你获得文件句柄,并将该名称添加到要杀的东西列表中),然后在你的关机挂钩。

+0

谢谢。有一个功能来做到这一点,tmp.deleteOnExit();.任何方式你的建议是一个不错的方法。 – Aajan