Comment Créer un Fichier Temporaire en Java

Quelquefois, vous pouvez avoir besoin de créer un fichier temporaire en Java. Cela se produira souvent pendant les tests unitaires lorsque les résultats ne doivent pas être stockés. Une fois finir le teste, vous ne devez pas vous inquéter à propos du contenu du fichier.

Ici, dans cet article, nous allons apprendre les façons de créer des fichiers temporaires en Java. Il existe deux méthodes statiques nommées createTempFile dans la classe Java File, l'une prend deux arguments, et l'autre prend trois arguments. Elle va nous aider à créer un ficher temporaire sur la position du fichier temporaire initial et l'autre est utilisé pour créer un fichier temporaire sur la position du fichier spécifié.

1. Utilisez la méthode File.createTempFile(String prefix, String suffix)

Syntaxe formelle

public static File createTempFile(String prefix,
                  String suffix)
                           throws IOException

C'est une façon facile pour créer un fichier temporaire to create temporary file dans le répertoire temporaire du système d'exploitation.

Cette méthode crée un fichier vide dans le répertoire du fichier temporaire initial, en utilisant the en utilisant le préfixe et le suffixe donnés pour générer son nom. Invoquer cette méthode est équivalent à invoquer createTempFile(prefix, suffix, null).

Il retourne un chemin abstrait indiquant un fichier vide fraîchement créé.

Cette méthode a les paramètres suivants:

  • prefix - La chaîne de préfixe à utiliser pour générer le nom du fichier; doit comporter au moins trois caractères.
  • suffix - La chaîne de suffixe à utiliser pour générer le nom du fichier; peut être null, dans quel cas le suffixe ".tmp" sera utilisé.

Exemple

import java.io.File;
import java.io.IOException;
 
public class JavaTempFile {
 
	public static void main(String[] args) {
		try {
			File tmpFile = File.createTempFile("data", null);
			File newFile = File.createTempFile("text", ".temp", new File("/Users/name/temp"));
			System.out.println(tmpFile.getCanonicalPath());
			System.out.println(newFile.getCanonicalPath());
			// write,read data to temporary file like any normal file
 
			// delete when application terminates
			tmpFile.deleteOnExit();
			newFile.deleteOnExit();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
}

La sortie pour le fichier de code ci-dessus sera:

Résultat

/private/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/data225458400489752329.tmp
/Users/name/temp/text2548249124983543974.temp
Le fichier temporaire ne sera pas supprimé après le programme Java est anullé, si vous ne créez pas un seconde exemple de fichier temporaire Java en appellant à la classe Java File méthode deleteOnExit. En fait, cet argument a un grand influence sur comment le fichier temporaire de Java est traité.

2. Utilisez la méthode File.createTempFile(String prefix, String suffix, File directory)

Syntaxe formelle

public static File createTempFile(String prefix,
                  String suffix,
                  File directory)
                           throws IOException

Cette méthode crée un nouveau fichier vide dans le répertoire du fichier temporaire spécifié, en utilisant le préfixe et le suffixe fourni pour produire son nom.

L'argument de préfixe doit avoir au moins trois caractères. On recommande utiliser un préfixe court, la It is recommended that the prefix be a short, chaîne significative telle que "ffn" ou "mail". L'argument de suffixe peut être null, dans quel cas le suffixe ".tmp" sera utilisé.

Pour créer un nouveau fichier, le préfixe et le suffixe peut d'abord être ajusté pour s'adapter aux limites de la plateforme sous-jacente. Si le préfixe est très long, alors il sera tronqué, mais ses trois premiers caractères seront toujours préservés. Si le suffixe est très long, alors il sera tronqué aussi, mais si cela commence par un caractère de période ('.') alors la période et les trois premiers caractères qui lui suivent seront toujours préservés. Une fois ces ajustements ont été faits, le nom du nouveau fichier sera généré par l'enchaînement du préfixe, cinq ou plus caractères générés en interne et le suffixe.

This method has the following parameters:

  • prefix - The prefix string to be used in generating the file's name; must be at least three characters long.
  • suffix - The suffix string to be used in generating the file's name; may be null, in which case the suffix ".tmp" will be used.
  • directory - The directory in which the file is to be created, or null if the default temporary-file directory is to be used.

This method returns an abstract pathname indicating a lately-created empty file. It throws an IOException, if the file could not be created, a IllegalArgumentException, if the prefix argument contains fewer than three characters and a SecurityException, if a security manager exists and its java.lang.SecurityManager.checkWrite(java.lang.String) method does not allow a file to be created.

Now, let’s see the above-mentioned method in use:

Example

import java.io.File;
import java.io.IOException;
 
public class TempFileExample {
 
   public static void main(String[] args) {
       try {
 
           File tempFile = File.createTempFile("hello", ".tmp");
           System.out.println("Temp file On Default Location: " + tempFile.getAbsolutePath());
           tempFile = File.createTempFile("hello", ".tmp", new File("C:/"));
           System.out.println("Temp file On Specified Location: " + tempFile.getAbsolutePath());
 
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

La sortie pour cela sera la suivante:

Résultat

Temp file On Default Location: C:\Users\swami\AppData\Local\Temp\hello7828748332363277400.tmp
Temp file On Specified Location: C:\hello950036450024130433.tmp
Dans le cas de teste unitaire par Junit, vous pouvez également utiliser TemporaryFolder. Le règle TemporaryFolder permet de créer des fichier et des dossiers qui sont garantis à être supprmié lorsque la méthode de teste fini (s'il passe ou échoue).

En concluant, voici quelques notes à propos des fichiers temporaires de la classe Java File:

  • Appelez la méthode deleteOnExit() avec la version de trois arguments de la méthode createTempFile() pour se débarrasser du fichier temporaire automatiquement
  • À propos de deleteOnExit() Javadoc fournit l'information que la suppression ne sera essayée que pour la termination normale d'une machine virtuelle, comme défini par Java Language Specification.