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.
-
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 MethodecreateNewFile()
aufrufen, um eine neue Datei in Java zu erstellen. Die MethodecreateNewFile()
der Klasse File gibttrue
zurück, wenn die neue Datei erstellt wurde, andernfallsfalse
, 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 Systemeigenschaftfile.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, dasscreateNewFile()
nur versucht, die Datei zu erstellen, und ein Verzeichnis entweder absolut oder relativ bereits vorhanden sein sollte, sonst wirft esIOException
. 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
-
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();
-
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