删除 Java 中的临时文件

2022-09-02 01:30:44

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

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

答案 1

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

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

只要文件上的某些流处于打开状态,它就会被锁定(至少在 JVM 的 windows 实现中是这样)。因此,它无法删除。

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


答案 2

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

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