删除临时目录

时间:2011-02-18 09:54:08

标签: java servlets temporary-directory

我在这里找到了一些用Java创建临时目录的代码。

public static File createTempDirectory() throws IOException
{
    final File temp;
    temp = File.createTempFile("temp", Long.toString(System.nanoTime()));

    if(!(temp.delete()))
    {
        throw new IOException("Could not delete temp file: " + temp.getAbsolutePath());
    }
    if(!(temp.mkdir()))
    {
        throw new IOException("Could not create temp directory: " + temp.getAbsolutePath());
    }
    return temp;
}

我如何在servlet生命的最后处理这个临时目录并删除它?

1 个答案:

答案 0 :(得分:4)

首先:

不要使用这种方法创建临时目录! 不安全!使用Guava方法Files.createTempDir()代替(或者如果您不想使用Guava,请手动重新实施)。其原因在JavaDoc中描述:

  

一个常见的陷阱是调用createTempFile,删除文件并在其位置创建一个目录,但这会导致竞争条件被利用来创建安全漏洞,尤其是当要写入可执行文件时目录。

关于你的真实问题:

您需要手动删除目录,这意味着您需要跟踪您创建的所有目录(例如在Collection<File>中)并在您确定不再需要它们时删除它们。 / p>