Java文件删除方法未按预期工作

Java文件删除方法未按预期工作,java,java-io,Java,Java Io,我必须处理数千个文件,但我的程序在处理了20个文件后失败了,除了“没有剩余空间” 这是我的伪代码 for (Task t: tasks) { File f = t.createTempFile() processing(f) f.delete() } 我检查了/tmp文件夹。这些文件没有被删除。我的头发掉下来了。有人能给点建议吗 PS:它应该有创建文件的权限,所以它也应该有删除文件的权限。这可能是因为您在文件上还有一些输入或输出流,而您忘记了关闭它。 如果JVM本身(在

我必须处理数千个文件,但我的程序在处理了20个文件后失败了,除了“没有剩余空间”

这是我的伪代码

for (Task t: tasks) {
    File f = t.createTempFile()
    processing(f)
    f.delete()
}
我检查了/tmp文件夹。这些文件没有被删除。我的头发掉下来了。有人能给点建议吗


PS:它应该有创建文件的权限,所以它也应该有删除文件的权限。

这可能是因为您在文件上还有一些输入或输出流,而您忘记了关闭它。
如果JVM本身(在任何线程中)仍保留文件的输入或输出流,则不会删除该文件。

正如上面的评论所说,您也可以检查方法的返回状态。

这可能是因为您在文件上仍然有一些输入或输出流,而您忘记了关闭它。
如果JVM本身(在任何线程中)仍保留文件的输入或输出流,则不会删除该文件。

正如上面的评论中所说,您也可以检查方法的返回状态。

您的
处理(…)
方法是否在后台线程中工作,或者是否阻塞?如果并且仅当成功删除文件或目录时,delete才会返回true;false否则,请检查返回值分号在哪里?如果某个大文件已被删除,但仍由某个进程打开,则可能会发生这样的情况。使用lsof | grep deleted命令进行检查,查看哪些进程已打开已删除文件的描述符。您可以重新启动该进程,空间将被释放。您的
处理(…)
方法是否在后台线程中工作,或者是否正在阻止?如果且仅当成功删除文件或目录时,delete将返回true;false否则,请检查返回值分号在哪里?如果某个大文件已被删除,但仍由某个进程打开,则可能会发生这样的情况。使用lsof | grep deleted命令进行检查,查看哪些进程已打开已删除文件的描述符。您可以重新启动进程,空间将被释放。我仍在尝试查找保存输入流的对象。会让你知道它是否有效。我仍在试图找到保存输入流的对象。会让你知道它是否有效。德克萨斯州