Удаление временного каталога - PullRequest
1 голос
/ 18 февраля 2011

Я нашел здесь некоторый код для создания временных каталогов в 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;
}

Как в конце жизни моего сервлета обработать этот временный каталог и удалить его?

1 Ответ

4 голосов
/ 18 февраля 2011

Первое:

Не используйте этот метод создания временного каталога! Это небезопасно! Используйте взамен Guava метод Files.createTempDir() (или повторно внедрите его вручную, если вы не хотите использовать Guava).Причина описана в JavaDoc:

Распространенной ошибкой является вызов createTempFile, удаление файла и создание на его месте каталога, но это приводит к состоянию гонки.которые могут быть использованы для создания уязвимостей безопасности, особенно когда исполняемые файлы должны быть записаны в каталог.

По поводу вашего реального вопроса:

Вам необходимо удалить каталог вручную, чтоозначает, что вам нужно отслеживать все созданные вами каталоги (например, в Collection<File>) и удалять их, когда вы точно знаете, что они больше не нужны.

...