我必须处理成千上万个文件,但是我的程序在20个文件之后失败,除了“没有剩余空间”。
这是我的伪代码。
for (Task t: tasks) {
File f = t.createTempFile()
processing(f)
f.delete()
}
我检查了/ tmp文件夹。文件不会被删除。我的头发掉下来了。有人可以给些建议吗?
PS:它应该具有创建文件的权限,因此也应该具有删除的权限。
答案 0 :(得分:2)
这可能是因为您在文件上仍有一些输入或输出流,却忘记了将其关闭。
如果JVM本身(在任何线程中)仍保持文件的输入或输出流,则不会删除它。
如上面的评论所述,您也可以检查该方法的返回状态。
答案 1 :(得分:0)
您的processing()方法在做什么?是否有机会大量执行String操作?是否将大量数据写入文件系统?当您看到此错误时,java堆栈跟踪会告诉您什么?您收到任何OOM错误吗?