Java neue Datei erstellen

Das Erstellen einer Datei ist eine sehr häufige E/A-Operation. Heute werden wir verschiedene Möglichkeiten betrachten, wie man in Java eine Datei erstellen kann.

Java-Datei erstellen

Es gibt drei beliebte Methoden, um in Java eine Datei zu erstellen. Schauen wir sie uns nacheinander an.

  1. File.createNewFile()

    java.io.File-Klasse kann verwendet werden, um in Java eine neue Datei zu erstellen. Wenn wir ein File-Objekt initialisieren, geben wir den Dateinamen an und können dann die Methode createNewFile() aufrufen, um eine neue Datei in Java zu erstellen. Die Methode createNewFile() der Klasse File gibt true zurück, wenn die neue Datei erstellt wurde, andernfalls false, wenn die Datei bereits existiert. Diese Methode wirft auch eine java.io.IOException aus, wenn sie die Datei nicht erstellen kann. Die erstellten Dateien sind leer und haben eine Größe von null Bytes. Wenn wir das File-Objekt erstellen, indem wir den Dateinamen übergeben, kann dies mit einem absoluten Pfad erfolgen, oder wir geben nur den Dateinamen an, oder wir geben den relativen Pfad an. Bei einem nicht absoluten Pfad versucht das File-Objekt, Dateien im Projektstammverzeichnis zu finden. Wenn wir das Programm von der Befehlszeile ausführen, versucht das File-Objekt bei einem nicht absoluten Pfad, Dateien aus dem aktuellen Verzeichnis zu finden. Beim Erstellen des Dateipfads sollten wir die Systemeigenschaft file.separator verwenden, um unser Programm plattformunabhängig zu machen. Schauen wir uns verschiedene Szenarien mit einem einfachen Java-Programm an, um eine neue Datei in Java zu erstellen.

    package com.journaldev.files;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreateNewFile {
    
        /**
         * Diese Klasse zeigt, wie man in Java eine Datei erstellt
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            String fileSeparator = System.getProperty("file.separator");
            
            // absoluter Dateiname mit Pfad
            String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt";
            File file = new File(absoluteFilePath);
            if(file.createNewFile()){
                System.out.println(absoluteFilePath+" Datei erstellt");
            }else System.out.println("Datei "+absoluteFilePath+" existiert bereits");
            
            // nur Dateiname
            file = new File("file.txt");
            if(file.createNewFile()){
                System.out.println("file.txt Datei erstellt im Projektstammverzeichnis");
            }else System.out.println("Datei file.txt existiert bereits im Projektstammverzeichnis");
            
            // relativer Pfad
            String relativePath = "tmp"+fileSeparator+"file.txt";
            file = new File(relativePath);
            if(file.createNewFile()){
                System.out.println(relativePath+" Datei erstellt im Projektstammverzeichnis");
            }else System.out.println("Datei "+relativePath+" existiert bereits im Projektstammverzeichnis");
        }
    
    }
    

    Wenn wir das obige Programm zum ersten Mal aus dem Eclipse IDE ausführen, wird die folgende Ausgabe erzeugt.

    /Users/pankaj/file.txt Datei erstellt
    file.txt Datei erstellt im Projektstammverzeichnis
    Exception in thread "main" 
    java.io.IOException: No such file or directory
    	at java.io.UnixFileSystem.createFileExclusively(Native Method)
    	at java.io.File.createNewFile(File.java:947)
    	at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
    

    Für den relativen Pfad wird eine IOException ausgelöst, weil das Verzeichnis tmp im Projektstammverzeichnis nicht vorhanden ist. Es ist also klar, dass createNewFile() nur versucht, die Datei zu erstellen, und ein Verzeichnis entweder absolut oder relativ bereits vorhanden sein sollte, sonst wirft es IOException. Ich habe also das Verzeichnis „tmp“ im Projektstammverzeichnis erstellt und das Programm erneut ausgeführt. Hier ist die Ausgabe.

    Datei /Users/pankaj/file.txt existiert bereits
    Datei file.txt existiert bereits im Projektstammverzeichnis
    tmp/file.txt Datei erstellt im Projektstammverzeichnis
    

    Die ersten beiden Dateien waren bereits vorhanden, daher gibt createNewFile() false zurück, die dritte Datei wurde im Verzeichnis „tmp“ erstellt und gibt true zurück. Jede nachfolgende Ausführung führt zu folgender Ausgabe:

    Datei /Users/pankaj/file.txt existiert bereits
    Datei file.txt existiert bereits im Projektstammverzeichnis
    Datei tmp/file.txt existiert bereits im Projektstammverzeichnis
    

    Wenn Sie dasselbe Programm vom Terminal im Klassenverzeichnis ausführen, lautet die Ausgabe wie folgt.

    // erste Ausführung vom Klassen-Ausgabeverzeichnis	
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Datei /Users/pankaj/file.txt existiert bereits
    file.txt Datei erstellt im Projektstammverzeichnis
    Exception in thread "main" java.io.IOException: No such file or directory
    	at java.io.UnixFileSystem.createFileExclusively(Native Method)
    	at java.io.File.createNewFile(File.java:947)
    	at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
    
    // tmp-Verzeichnis existiert nicht, lassen Sie uns es erstellen
    pankaj:~/CODE/JavaFiles/bin$ mkdir tmp
    
    // zweite Ausführung
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Datei /Users/pankaj/file.txt existiert bereits
    Datei file.txt existiert bereits im Projektstammverzeichnis
    tmp/file.txt Datei erstellt im Projektstammverzeichnis
    
    // dritte und folgende Ausführungen
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Datei /Users/pankaj/file.txt existiert bereits
    Datei file.txt existiert bereits im Projektstammverzeichnis
    Datei tmp/file.txt existiert bereits im Projektstammverzeichnis
    
  2. FileOutputStream.write(byte[] b)

    Wenn Sie eine neue Datei erstellen und gleichzeitig einige Daten darin schreiben möchten, können Sie die Methode write von FileOutputStream verwenden. Im Folgenden finden Sie einen einfachen Codeausschnitt, der die Verwendung zeigt. Die Regeln für den absoluten Pfad und den relativen Pfad, die oben diskutiert wurden, gelten auch in diesem Fall.

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

    Mit der Klasse Java NIO Files können wir eine neue Datei erstellen und einige Daten darin schreiben. Dies ist eine gute Option, da wir uns keine Sorgen um das Schließen von IO-Ressourcen machen müssen.

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

Das ist alles, um eine neue Datei im Java-Programm zu erstellen.

Sie können weitere Core-Java-Beispiele aus unserem GitHub-Repository überprüfen.

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