我必须处理数千个文件,但我的程序在处理 20 个文件后失败,但出现“No Space Left”异常。
这是我的伪代码。
for (Task t: tasks) {
File f = t.createTempFile()
processing(f)
f.delete()
}
我检查了/tmp 文件夹。文件不会被删除。我的头发都快掉光了。有人可以给一些建议吗?
PS:它应该具有创建文件的权限,因此它也应该具有删除权限。
最佳答案
这可能是因为文件上仍有一些输入或输出流,而您忘记关闭它。
如果 JVM 本身(在任何线程中)仍然持有文件的输入或输出流,则不会将其删除。
正如上面评论中所说,您也可以检查该方法的返回状态。
关于Java 文件删除方法未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54412513/