Что такое безопасный способ создания временного файла в Java?
Я ищу способ безопасный для создания временного файла на Java. Безопасно, я имею в виду следующее:
- Имя должно быть уникальным даже в условиях потенциальной гонки (например, другой поток одновременно вызывает одну и ту же функцию, или другой процесс запускает этот код одновременно)
- Файл должен быть закрытым, даже в условиях потенциальной гонки (например, другой пользователь пытается получить файл chmod с высокой скоростью).
- Я могу сказать, что он удаляет файл, без необходимости выполнять общее удаление и риск удаления неправильного файла.
- В идеале, убедитесь, что файл удален, даже если исключение выбрано, прежде чем я получу возможность
- Файл должен по умолчанию использовать правильное местоположение (например, указанный в JVM tmp dir, по умолчанию для системного temp dir)
Ответы
Ответ 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");