【发布时间】:2019-06-22 01:50:24
【问题描述】:
我必须处理数千个文件,但我的程序在 20 个文件后失败,但“没有剩余空间”例外。
这是我的伪代码。
for (Task t: tasks) {
File f = t.createTempFile()
processing(f)
f.delete()
}
我检查了 /tmp 文件夹。文件没有被删除。我的头发都掉光了。谁能给点建议?
PS:它应该有创建文件的权限,所以它也应该有删除的权限。
【问题讨论】:
-
您的
processing(...)方法是在后台线程中工作,还是阻塞? -
delete 当且仅当文件或目录被成功删除时才会返回 true;否则为false,检查返回值
-
你的分号在哪里?
Task是在哪里定义的? -
如果某些大文件已被删除,但仍被某些进程打开,则可能会发生这种情况。使用命令 lsof | 检查grep deleted 查看哪些进程打开了已删除文件的描述符。您可以重新启动该过程,空间将被释放。