删除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
正常工作(我怀疑)。 在UNIX
, kill
将是一个干净的关闭(即ShutdownHooks
将被处理),而kill -9
更像是一个强制退出 。
deleteOnExit
绝对适合我!