Write Files
Kurz: Daten in eine Datei schreiben — z. B. mit FileWriter, BufferedWriter oder der statischen Methode Files.write(...).
Genauer: Ohne append-Modus (new FileWriter(datei, true)) überschreibt jedes erneute Öffnen die bestehende Datei komplett. BufferedWriter puffert Schreibzugriffe im Speicher und reduziert so teure einzelne Festplattenzugriffe — sollte nach Gebrauch (idealerweise via try-with-resources) geschlossen werden, damit gepufferte Daten sicher landen.
Im Detail
// Einfach, aber jeder .write()-Aufruf kann ein teurer einzelner Festplattenzugriff sein:
try (FileWriter fw = new FileWriter("notiz.txt")) {
fw.write("Erste Zeile\n");
fw.write("Zweite Zeile\n");
} catch (IOException e) {
e.printStackTrace();
}
// Gepuffert, effizienter bei vielen einzelnen Schreibvorgängen:
try (BufferedWriter bw = new BufferedWriter(new FileWriter("notiz.txt", true))) { // true = anhängen
bw.write("Angehängte Zeile");
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
// Kompakt für einfache Fälle (seit Java 7):
Files.writeString(Path.of("notiz.txt"), "Kompletter Inhalt auf einmal");Ohne den zweiten true-Parameter im FileWriter-Konstruktor überschreibt jedes erneute Öffnen die Datei komplett von Null — soll stattdessen an bestehenden Inhalt angehängt werden, muss das explizit über diesen append-Modus angefordert werden. BufferedWriter wickelt einen FileWriter ein und sammelt Schreibzugriffe zunächst im Arbeitsspeicher, statt bei jedem einzelnen .write()-Aufruf direkt auf die Festplatte zuzugreifen — das reduziert die Anzahl teurer I/O-Operationen erheblich, besonders bei vielen kleinen Schreibvorgängen in einer Schleife.
Wichtig: gepufferte Daten landen erst dann GARANTIERT auf der Festplatte, wenn der Writer geschlossen wird (oder explizit .flush() aufgerufen wird) — bricht das Programm vorher ab (z. B. durch einen Absturz), können ungeschriebene Puffer-Inhalte verloren gehen. Genau deshalb gehört Schreiben fast immer in ein try-with-resources, das das Schließen (und damit den finalen Flush) auch bei einer Exception garantiert. Für einfache Fälle ohne Streaming bietet die statische Utility-Methode Files.writeString(...) (bzw. Files.write(...) für Byte-Arrays) seit Java 7 eine noch kompaktere Alternative, die intern selbst für korrektes Öffnen/Schließen sorgt.
Siehe auch: Files, BufferedWriter, Create Files