Java créer un nouveau fichier

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.

  1. 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éthode createNewFile() pour créer un nouveau fichier en Java. La méthode createNewFile() de la classe File retourne true si le nouveau fichier est créé et false 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ème file.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 que createNewFile() 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 une IOException. 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() retourne false, 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
    
  2. 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();
    
  3. 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