Créer un fichier est une opération d’entrée/sortie très courante. Aujourd’hui, nous allons examiner différentes façons de créer un fichier en Java.
Créer un fichier en Java
Il existe trois méthodes populaires pour créer un fichier en Java. Regardons-les une par une.
-
File.createNewFile()
java.io.File
class peut être utilisée pour créer un nouveau fichier en Java. Lorsque nous initialisons un objet File, nous fournissons le nom du fichier, puis nous pouvons appeler la méthodecreateNewFile()
pour créer un nouveau fichier en Java. La méthodecreateNewFile()
de la classe File retournetrue
si le nouveau fichier est créé etfalse
s’il existe déjà. Cette méthode lance également une java.io.IOException lorsqu’elle n’est pas en mesure de créer le fichier. Les fichiers créés sont vides et de taille nulle. Lorsque nous créons l’objet File en passant le nom du fichier, cela peut être avec un chemin absolu, ou nous pouvons fournir uniquement le nom du fichier ou nous pouvons fournir le chemin relatif. Pour un chemin non absolu, l’objet File essaie de localiser les fichiers dans le répertoire racine du projet. Si nous exécutons le programme depuis la ligne de commande, pour le chemin non absolu, l’objet File essaie de localiser les fichiers depuis le répertoire actuel. Lorsque nous créons le chemin du fichier, nous devrions utiliser la propriété systèmefile.separator
pour rendre notre programme indépendant de la plateforme. Voyons différents scénarios avec un programme Java simple pour créer un nouveau fichier en Java.package com.journaldev.files; import java.io.File; import java.io.IOException; public class CreateNewFile { /** * Cette classe montre comment créer un fichier en Java * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String fileSeparator = System.getProperty("file.separator"); //nom de fichier absolu avec chemin String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt"; File file = new File(absoluteFilePath); if(file.createNewFile()){ System.out.println(absoluteFilePath+" Fichier créé"); }else System.out.println("Le fichier "+absoluteFilePath+" existe déjà"); //nom de fichier uniquement file = new File("file.txt"); if(file.createNewFile()){ System.out.println("file.txt Fichier créé dans le répertoire racine du projet"); }else System.out.println("Le fichier file.txt existe déjà dans le répertoire racine du projet"); //chemin relatif String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile()){ System.out.println(relativePath+" Fichier créé dans le répertoire racine du projet"); }else System.out.println("Le fichier "+relativePath+" existe déjà dans le répertoire racine du projet"); } }
Lorsque nous exécutons le programme ci-dessus depuis Eclipse IDE pour la première fois, la sortie ci-dessous est produite.
/Users/pankaj/file.txt Fichier créé file.txt Fichier créé dans le répertoire racine du projet Exception in thread "main" java.io.IOException: Aucun fichier ou dossier de ce type at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
Pour le chemin relatif, il lance une IOException car le répertoire
tmp
n’est pas présent dans le dossier racine du projet. Il est donc clair quecreateNewFile()
essaie simplement de créer le fichier et tout répertoire, qu’il soit absolu ou relatif, doit être déjà présent, sinon il lance uneIOException
. J’ai donc créé le répertoire « tmp » dans le dossier racine du projet et j’ai exécuté le programme à nouveau, voici la sortie.Le fichier /Users/pankaj/file.txt existe déjà Le fichier file.txt existe déjà dans le répertoire racine du projet tmp/file.txt Fichier créé dans le répertoire racine du projet
Les deux premiers fichiers étaient déjà présents, donc
createNewFile()
retournefalse
, le troisième fichier a été créé dans le répertoire tmp et retourne true. Toute exécution ultérieure donne la sortie suivante:Le fichier /Users/pankaj/file.txt existe déjà Le fichier file.txt existe déjà dans le répertoire racine du projet Le fichier tmp/file.txt existe déjà dans le répertoire racine du projet
Si vous exécutez le même programme depuis le répertoire des classes du terminal, voici la sortie.
//première exécution depuis le répertoire de sortie des classes pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Le fichier /Users/pankaj/file.txt existe déjà file.txt Fichier créé dans le répertoire racine du projet Exception in thread "main" java.io.IOException: Aucun fichier ou dossier de ce type at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32) //le répertoire tmp n'existe pas, créons-le pankaj:~/CODE/JavaFiles/bin$ mkdir tmp //deuxième exécution pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Le fichier /Users/pankaj/file.txt existe déjà Le fichier file.txt existe déjà dans le répertoire racine du projet tmp/file.txt Fichier créé dans le répertoire racine du projet //troisième et ultérieure exécution pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Le fichier /Users/pankaj/file.txt existe déjà Le fichier file.txt existe déjà dans le répertoire racine du projet Le fichier tmp/file.txt existe déjà dans le répertoire racine du projet
-
FileOutputStream.write(byte[] b)
Si vous souhaitez créer un nouveau fichier et en même temps écrire des données dedans, vous pouvez utiliser la méthode write de FileOutputStream. Ci-dessous, un exemple de code simple pour illustrer son utilisation. Les règles pour le chemin absolu et le chemin relatif discutées ci-dessus s’appliquent également dans ce cas.
String fileData = "Pankaj Kumar"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
-
Java NIO Files.write()
Nous pouvons utiliser la classe Java NIO Files pour créer un nouveau fichier et y écrire des données. C’est une bonne option car nous n’avons pas à nous soucier de la fermeture des ressources d’entrée-sortie.
String fileData = "Pankaj Kumar"; Files.write(Paths.get("name.txt"), fileData.getBytes());
C’est tout pour la création d’un nouveau fichier dans le programme Java.
Vous pouvez consulter plus d’exemples de base de Java dans notre Dépôt GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file