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