Java - Créer un fichier

1. Vue d'ensemble

Dans ce tutoriel rapide, nous allons apprendre à créer un nouveau fichier en Java - en utilisant d'abord les classes Files et Path de NIO, puis les classes Java File et FileOutputStream , Google Guava et enfin la bibliothèque Apache Commons IO.

Cet article fait partie de la série «Java - Back to Basic» ici sur Baeldung.

2. Configuration

Dans les exemples, nous définirons une constante pour le nom du fichier:

private final String FILE_NAME = "src/test/resources/fileToCreate.txt";

Et nous ajouterons également une étape de nettoyage pour nous assurer que le fichier n'existe pas déjà avant chaque test, et pour le supprimer après chaque test exécuté:

@AfterEach @BeforeEach public void cleanUpFiles() { File targetFile = new File(FILE_NAME); targetFile.delete(); }

3. Utilisation de NIO Files.createFile ()

Commençons par utiliser la méthode Files.createFile () du package Java NIO:

@Test public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException { Path newFilePath = Paths.get(FILE_NAME); Files.createFile(newFilePath); }

Comme vous pouvez le voir, le code est toujours très simple; nous utilisons maintenant la nouvelle interface Path au lieu de l'ancien fichier .

Une chose à noter ici est que la nouvelle API fait bon usage des exceptions. Si le fichier existe déjà, nous n'avons plus à vérifier un code retour. Au lieu de cela, nous obtiendrons une FileAlreadyExistsException :

java.nio.file.FileAlreadyExistsException: src/test/resources/fileToCreate.txt at sun.n.f.WindowsException.translateToIOException(WindowsException.java:81)

4. Utilisation de File.createNewFile ()

Voyons maintenant comment nous pouvons faire de même en utilisant la classe java.io.File :

@Test public void givenUsingFile_whenCreatingFile_thenCorrect() throws IOException { File newFile = new File(FILE_NAME); boolean success = newFile.createNewFile(); assertTrue(success); }

Notez que le fichier ne doit pas exister pour que cette opération réussisse. Si le fichier existe, l' opération createNewFile () retournera false.

5. Utilisation de FileOutputStream

Une autre façon de créer un nouveau fichier consiste à utiliser java.io.FileOutputStream :

@Test public void givenUsingFileOutputStream_whenCreatingFile_thenCorrect() throws IOException { try(FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)){ } }

Dans ce cas, un nouveau fichier est créé lorsque nous instancions l' objet FileOutputStream . Si un fichier avec un nom donné existe déjà, il sera écrasé . Si, cependant, le fichier existant est un répertoire ou si un nouveau fichier ne peut pas être créé pour une raison quelconque, nous obtiendrons une FileNotFoundException .

De plus, notez que nous avons utilisé une instruction try-with-resources - pour être sûr qu'un flux est correctement fermé.

6. Utilisation de la goyave

La solution Guava pour créer un nouveau fichier est également une simple ligne rapide:

@Test public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException { com.google.common.io.Files.touch(new File(FILE_NAME)); }

7. Utilisation d'Apache Commons IO

La bibliothèque Apache Commons fournit la méthode FileUtils.touch () qui implémente le même comportement que l' utilitaire « touch » sous Linux.

Par conséquent, il crée un nouveau fichier vide ou même un fichier et le chemin complet vers celui-ci dans un système de fichiers:

@Test public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException { FileUtils.touch(new File(FILE_NAME)); }

Notez que cela se comporte légèrement différemment des exemples précédents: si le fichier existe déjà, l'opération n'échoue pas, elle ne fait simplement rien.

Et là, nous l'avons - 4 façons rapides de créer un nouveau fichier en Java.

8. Conclusion

Dans cet article, nous avons examiné différentes solutions pour créer un fichier en Java. Nous avons utilisé des classes qui font partie du JDK et des bibliothèques externes.

Le code des exemples est disponible à l'adresse over sur GitHub.