Create Files
Kurz: Eine neue, leere Datei im Dateisystem anlegen — z. B. mit File.createNewFile() oder Files.createFile(path).
Genauer: createNewFile() gibt false zurück (statt einer Exception), wenn die Datei bereits existiert — leicht zu übersehen, wenn man nur auf Exceptions prüft. Files.createFile(path) aus java.nio.file wirft dagegen eine FileAlreadyExistsException, was Fehler beim Testen eher auffallen lässt.
Im Detail
// Ältere API (java.io)
File datei = new File("neu.txt");
boolean erstellt = datei.createNewFile(); // false = existierte schon, KEINE Exception
// Moderne API (java.nio.file) - seit Java 7
Path pfad = Path.of("neu2.txt");
try {
Files.createFile(pfad); // wirft FileAlreadyExistsException, wenn Datei schon existiert
} catch (FileAlreadyExistsException e) {
System.out.println("Existiert bereits");
} catch (IOException e) {
System.err.println("Fehler: " + e.getMessage());
}
// Verzeichnisse anlegen (Elternordner müssen ggf. mit erstellt werden)
Files.createDirectories(Path.of("ordner/unterordner"));Die neuere java.nio.file-API (Path/Files) gilt heute als der bessere Standard gegenüber der älteren java.io.File-Klasse: aussagekräftigere Exceptions statt stiller boolean-Rückgaben, bessere Unterstützung für symbolische Links und Dateiattribute, und Files.createDirectories() legt bei Bedarf gleich die komplette Ordnerstruktur an (im Gegensatz zu mkdir(), das nur einen einzelnen Ordner erzeugt und scheitert, wenn der Elternordner fehlt).
Datei mit Inhalt in einem Schritt erzeugen
Oft soll eine Datei nicht nur angelegt, sondern gleich mit Inhalt befüllt werden — dafür eignet sich Files.writeString() (seit Java 11) besser als ein separates createFile() + write():
Path pfad = Path.of("konfiguration.txt");
Files.writeString(pfad, "einstellung=wert\n", StandardOpenOption.CREATE); // erzeugt + schreibt in einem SchrittTemporäre Dateien
Für Dateien, die nur während der Programmlaufzeit gebraucht werden (z. B. Zwischenergebnisse), bietet Java Files.createTempFile() — das Betriebssystem wählt automatisch einen geeigneten temporären Speicherort:
Path temp = Files.createTempFile("verarbeitung", ".tmp");
temp.toFile().deleteOnExit(); // wird beim JVM-Beenden automatisch gelöschtBerechtigungsfehler abfangen
Neben “Datei existiert bereits” ist eine fehlende Schreibberechtigung im Zielverzeichnis die zweithäufigste Fehlerquelle — Files.createFile() wirft dafür eine AccessDeniedException (eine Unterklasse von IOException), die sich gezielt abfangen lässt, um dem Nutzer eine verständlichere Fehlermeldung als einen rohen Stacktrace zu zeigen.
try-with-resources bei Datei-Operationen
Auch wenn createFile() selbst keine Ressource offen lässt, folgen direkt anschließende Schreiboperationen fast immer dem try-with-resources-Muster, damit Dateihandles zuverlässig geschlossen werden, selbst wenn eine Exception auftritt:
Path pfad = Files.createFile(Path.of("log.txt"));
try (BufferedWriter writer = Files.newBufferedWriter(pfad)) {
writer.write("erster Eintrag");
} // writer wird automatisch geschlossen, auch bei einer ExceptionOhne try-with-resources müsste das Schließen manuell in einem finally-Block passieren — leicht zu vergessen, besonders wenn mehrere Ressourcen gleichzeitig offen sind.
Siehe auch: Files, Write Files, Exceptions