删除java中的临时文件

我在java中创建临时文件,但我无法删除它。 这是我写的代码:

temp = File.createTempFile("temp", ".txt"); temp.deleteOnExit(); fileoutput = new FileWriter(temp); buffout = new BufferedWriter(fileoutput); 

添加以下代码(在完成对文件的操作后):

 buffout.close(); fileoutput.close(); temp.delete(); 

只要文件上的某些流是打开的,它就会被锁定(至少在JVM的Windows实现上)。 所以它无法删除。

最好在使用后检查所有打开的流是否再次关闭,因为这是一个糟糕的内存泄漏情况。 您的应用程序甚至可以占用所有可用的文件句柄,这可能导致系统无法使用。

有一个错误说如果文件由文件编写者或任何东西打开,它将不会被删除。 在窗户上。 检查您是否关闭文件编写者。

另一种解决方法是安装ShutdownHook ,手动删除文件。

您必须干净地关闭VM才能使deleteOnExit正常工作(我怀疑)。 在UNIXkill将是一个干净的关闭(即ShutdownHooks将被处理),而kill -9更像是一个强制退出

deleteOnExit绝对适合我!