web-dev-qa-db-fra.com

Quel est un moyen sûr de créer un fichier Temp en Java?

Je cherche un moyen sûr de créer un fichier temporaire en Java. Par coffre-fort, j'entends ce qui suit:

  • Le nom doit être unique, même dans des conditions de concurrence potentielles (par exemple, un autre thread appelle la même fonction au même moment ou un autre processus exécute ce code simultanément).
  • Le fichier doit être privé, même dans des conditions de concurrence potentielles (par exemple, un autre utilisateur essaie de chmoder un fichier à un débit élevé).
  • Je peux lui dire de supprimer le fichier, sans avoir à effectuer une suppression générique, et risquer de supprimer le mauvais fichier
  • Idéalement, il faut s’assurer que le fichier est supprimé, même si une exception est levée avant que j’aie la chance de
  • Le fichier doit par défaut être placé dans un emplacement correct (par exemple, le répertoire tmp spécifié par la machine virtuelle Java et le répertoire par défaut du système)
71
SRobertJames

Utilisez File.createTempFile() .

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

Va créer un fichier dans le répertoire temp, comme:

préfixe-6340763779352094442-suffixe

104
Stefan

Depuis Java 7, il existe un nouvel API de fichier "NIO2" qui contient de nouvelles méthodes de création de fichiers et de répertoires temnp. Voir

par exemple.

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

ou

Path tempFile = Files.createTempFile("tempfiles", ".tmp");
30
Tim Büthe