Подтвердить что ты не робот

Что такое безопасный способ создания временного файла в Java?

Я ищу способ безопасный для создания временного файла на Java. Безопасно, я имею в виду следующее:

  • Имя должно быть уникальным даже в условиях потенциальной гонки (например, другой поток одновременно вызывает одну и ту же функцию, или другой процесс запускает этот код одновременно)
  • Файл должен быть закрытым, даже в условиях потенциальной гонки (например, другой пользователь пытается получить файл chmod с высокой скоростью).
  • Я могу сказать, что он удаляет файл, без необходимости выполнять общее удаление и риск удаления неправильного файла.
  • В идеале, убедитесь, что файл удален, даже если исключение выбрано, прежде чем я получу возможность
  • Файл должен по умолчанию использовать правильное местоположение (например, указанный в JVM tmp dir, по умолчанию для системного temp dir)
4b9b3361

Ответ 1

Используйте File.createTempFile().

File tempFile = File.createTempFile("prefix-", "-suffix");
//File tempFile = File.createTempFile("MyAppName-", ".tmp");
tempFile.deleteOnExit();

Создает файл в каталоге temp, например:

Префикс-6340763779352094442-суффикс

Ответ 2

Так как Java 7 существует новый файл API "NIO2", который содержит новые методы для создания файлов и каталогов temnp. См.

например.

Path tempDir = Files.createTempDirectory("tempfiles");

или

Path tempFile = Files.createTempFile("tempfiles", ".tmp");