directorio - ¿Cuál es una forma segura de crear un archivo Temp en Java?
crear un archivo en un directorio java (2)
Desde Java 7 existe el nuevo archivo API "NIO2" que contiene nuevos métodos para crear archivos y directorios temnp. Ver
p.ej
Path tempDir = Files.createTempDirectory("tempfiles");
o
Path tempFile = Files.createTempFile("tempfiles", ".tmp");
Estoy buscando una forma segura de crear un archivo temporal en Java. Por seguro, quiero decir lo siguiente:
- El nombre debe ser único, incluso en condiciones de carrera potenciales (por ejemplo, otro Thread llama a la misma función al mismo tiempo u otro proceso ejecuta este código simultáneamente)
- El archivo debe ser privado, incluso en condiciones potenciales de carrera (por ejemplo, otro usuario intenta cambiar el archivo a alta velocidad)
- Puedo decirle que elimine el archivo, sin que tenga que hacer una eliminación genérica, y corro el riesgo de eliminar el archivo incorrecto
- Idealmente, debería garantizar que el archivo se elimine, incluso si se produce una excepción antes de que tenga la oportunidad de
- El archivo debe tener una ubicación correcta (p. Ej., El directorio tmp especificado por JVM, predeterminado en el directorio temporal del sistema)
Use
File.createTempFile()
.
File tempFile = File.createTempFile("prefix-", "-suffix");
//File tempFile = File.createTempFile("MyAppName-", ".tmp");
tempFile.deleteOnExit();
Creará un archivo en el directorio temporal, como:
prefijo-6340763779352094442-sufijo