我在这里找到了一些用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生命的最后处理这个临时目录并删除它?
答案 0 :(得分:4)
首先:
不要使用这种方法创建临时目录! 不安全!使用Guava方法Files.createTempDir()
代替(或者如果您不想使用Guava,请手动重新实施)。其原因在JavaDoc中描述:
一个常见的陷阱是调用
createTempFile
,删除文件并在其位置创建一个目录,但这会导致竞争条件被利用来创建安全漏洞,尤其是当要写入可执行文件时目录。
关于你的真实问题:
您需要手动删除目录,这意味着您需要跟踪您创建的所有目录(例如在Collection<File>
中)并在您确定不再需要它们时删除它们。 / p>