在我的应用程序中,我正在编写一个文件来存储一些执行信息,执行完成后,我想删除临时文件。问题甚至是在文件被流关闭或刷新后,我也无法删除文件。我试过了
Thread.sleep(1000); file.delete();
而且也没有删除文件。然后我创建了一个while循环
while(!file.delete()) Thread.sleep(1000);
它一直在循环。然后我加了
System.gc(); file.delete();
而且有效!!!
我已经验证我已经正常关闭或刷新了文件。我想知道为什么我的代码可以使用System.gc()?
System.gc()
那似乎表明您没有打电话close()。
close()
原因: 在Java的开始时期,该Object.finalize()方法用于清理垃圾收集,并且对于I / O,它执行了close()。
Object.finalize()
在使用该文件(未关闭)之前,无法在Windows上删除该文件。