Java maak nieuw bestand aan

Het maken van een bestand is een zeer gebruikelijke IO-operatie. Vandaag zullen we verschillende manieren bekijken om een bestand te maken in Java.

Java bestand maken

Er zijn drie populaire methoden om een bestand te maken in Java. Laten we ze één voor één bekijken.

  1. File.createNewFile()

    java.io.File-klasse kan worden gebruikt om een nieuw bestand te maken in Java. Wanneer we een File-object initialiseren, geven we de bestandsnaam op en vervolgens kunnen we de methode createNewFile() aanroepen om een nieuw bestand te maken in Java. De createNewFile()-methode van het File-object retourneert true als er een nieuw bestand is gemaakt en false als het bestand al bestaat. Deze methode gooit ook een java.io.IOException wanneer het niet lukt om het bestand te maken. De gemaakte bestanden zijn leeg en hebben nul bytes. Wanneer we het File-object maken door de bestandsnaam door te geven, kan dit met een absoluut pad, of we kunnen alleen de bestandsnaam opgeven of we kunnen het relatieve pad opgeven. Voor een niet-absoluut pad probeert het File-object bestanden te vinden in de projecthoofdmap. Als we het programma uitvoeren vanaf de opdrachtregel, probeert het File-object voor het niet-absoluut pad bestanden te vinden vanuit de huidige map. Bij het maken van het bestandspad moeten we de systeemeigenschap file.separator gebruiken om ons programma platformonafhankelijk te maken. Laten we verschillende scenario’s bekijken met een eenvoudig Java-programma om een nieuw bestand te maken in Java.

    package com.journaldev.files;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreateNewFile {
    
        /**
         * Deze klasse toont hoe een bestand te maken in Java
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            String fileSeparator = System.getProperty("file.separator");
            
            //absoluut bestandsnaam met pad
            String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt";
            File file = new File(absoluteFilePath);
            if(file.createNewFile()){
                System.out.println(absoluteFilePath+" Bestand Gemaakt");
            }else System.out.println("Bestand "+absoluteFilePath+" bestaat al");
            
            //alleen bestandsnaam
            file = new File("file.txt");
            if(file.createNewFile()){
                System.out.println("file.txt Bestand Gemaakt in de hoofdmap van het project");
            }else System.out.println("Bestand file.txt bestaat al in de hoofdmap van het project");
            
            //relatief pad
            String relativePath = "tmp"+fileSeparator+"file.txt";
            file = new File(relativePath);
            if(file.createNewFile()){
                System.out.println(relativePath+" Bestand Gemaakt in de hoofdmap van het project");
            }else System.out.println("Bestand "+relativePath+" bestaat al in de hoofdmap van het project");
        }
    
    }
    

    Wanneer we het bovenstaande programma voor de eerste keer uitvoeren vanuit Eclipse IDE, wordt de onderstaande uitvoer geproduceerd.

    /Users/pankaj/file.txt Bestand Gemaakt
    file.txt Bestand Gemaakt in de hoofdmap van het project
    Uitzondering in thread "main" 
    java.io.IOException: Bestand of map bestaat niet
        bij java.io.UnixFileSystem.createFileExclusively(Native Method)
        bij java.io.File.createNewFile(File.java:947)
        bij com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
    

    Voor het relatieve pad gooit het een IOException omdat de tmp-map niet aanwezig is in de hoofdmap van het project. Dus het is duidelijk dat createNewFile() alleen probeert het bestand te maken en elke map, of het nu absoluut of relatief is, al aanwezig moet zijn, anders gooit het een IOException. Dus ik heb de “tmp”-map aangemaakt in de hoofdmap van het project en het programma opnieuw uitgevoerd, hier is de uitvoer.

    Bestand /Users/pankaj/file.txt bestaat al
    Bestand file.txt bestaat al in de hoofdmap van het project
    tmp/file.txt Bestand Gemaakt in de hoofdmap van het project
    

    De eerste twee bestanden waren al aanwezig, dus createNewFile() retourneert false, het derde bestand is gemaakt in de tmp-map en retourneert true. Elke volgende uitvoering resulteert in de volgende uitvoer:

    Bestand /Users/pankaj/file.txt bestaat al
    Bestand file.txt bestaat al in de hoofdmap van het project
    Bestand tmp/file.txt bestaat al in de hoofdmap van het project
    

    Als je hetzelfde programma uitvoert vanuit de map met klassen in de terminal, is hier de uitvoer.

    //eerste uitvoering vanuit de uitvoermap van klassen	
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Bestand /Users/pankaj/file.txt bestaat al
    file.txt Bestand Gemaakt in de hoofdmap van het project
    Uitzondering in thread "main" java.io.IOException: Bestand of map bestaat niet
        bij java.io.UnixFileSystem.createFileExclusively(Native Method)
        bij java.io.File.createNewFile(File.java:947)
        bij com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
    
    //tmp-map bestaat niet, laten we deze aanmaken
    pankaj:~/CODE/JavaFiles/bin$ mkdir tmp
    
    //tweede keer uitvoeren
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Bestand /Users/pankaj/file.txt bestaat al
    Bestand file.txt bestaat al in de hoofdmap van het project
    tmp/file.txt Bestand Gemaakt in de hoofdmap van het project
    
    //derde en volgende uitvoeringen
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Bestand /Users/pankaj/file.txt bestaat al
    Bestand file.txt bestaat al in de hoofdmap van het project
    Bestand tmp/file.txt bestaat al in de hoofdmap van het project
    
  2. FileOutputStream.write(byte[] b)

    Als je een nieuw bestand wilt maken en tegelijkertijd wat gegevens wilt schrijven, kun je de FileOutputStream write-methode gebruiken. Hieronder staat een eenvoudig voorbeeld van de code om het gebruik ervan te laten zien. De regels voor absoluut pad en relatief pad die hierboven zijn besproken, zijn ook van toepassing in dit geval.

    String fileData = "Pankaj Kumar";
    FileOutputStream fos = new FileOutputStream("name.txt");
    fos.write(fileData.getBytes());
    fos.flush();
    fos.close();
    
  3. Java NIO Files.write()

    We kunnen de klasse Java NIO Files gebruiken om een nieuw bestand te maken en er gegevens in te schrijven. Dit is een goede optie omdat we ons geen zorgen hoeven te maken over het sluiten van IO-bronnen.

    String fileData = "Pankaj Kumar";
    Files.write(Paths.get("name.txt"), fileData.getBytes());
    

Dat is alles voor het maken van een nieuw bestand in het Java-programma.

Je kunt meer voorbeelden van core Java vinden in onze GitHub Repository.

Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file