小编典典

Java文件删除和System.gc()

java

在我的应用程序中,我正在编写一个文件来存储一些执行信息,执行完成后,我想删除临时文件。问题甚至是在文件被流关闭或刷新后,我也无法删除文件。我试过了

Thread.sleep(1000);
file.delete();

而且也没有删除文件。然后我创建了一个while循环

while(!file.delete())
   Thread.sleep(1000);

它一直在循环。然后我加了

System.gc();
file.delete();

而且有效!!!

我已经验证我已经正常关闭或刷新了文件。我想知道为什么我的代码可以使用System.gc()


阅读 517

收藏
2020-11-26

共1个答案

小编典典

那似乎表明您没有打电话close()

原因: 在Java的开始时期,该Object.finalize()方法用于清理垃圾收集,并且对于I / O,它执行了close()

在使用该文件(未关闭)之前,无法在Windows上删除该文件。

2020-11-26