Java: einen String in eine Datei schreiben

Es gibt viele Wege, mit Java Dateien zu erzeugen. Eine einfache ist die Klasse FileWriter.

Mit FileWriter einen String in eine Datei schreiben

Das einfachste Beispiel, um mittels Java einen String in eine Datei zu schreiben, sieht damit so aus:

    public static void writeFileViaFileWriter( String filename) throws IOException {
        File f = new File(filename);
        FileWriter fw  = new FileWriter(f);
        fw.write("some file content");
        fw.close();
    }

Bitte denke daran, die Ausnahme zu behandeln. Beispiel: der Dateiname enthält einen ungültigen Pfad. Dann kann die Datei nicht geschrieben werden und die Exception wird ausgelöst

Eine weitere Fehlermöglichkeit ist: die Datei existiert schon und ist schreibgeschützt. Auch dann bekommst du eine Felermeldung.

Mit FileWriter und BufferedWriter einen String in eine Datei schreiben

Bei einem kurzen Text ist das obige Beispiel ausreichend. Wenn du aber viel Text zu schreiben hast, und viele kleinere Zugriffe jeweils ein Stück Text liefern, dann kannst du einen BufferedWriter verwenden. Dieser hat einen Puffer, in dem er die zu schreibenden Daten sammelt. Immer dann, wenn der Puffer voll ist, wird der gesamte Puffer auf einmal auf die Festplatte geschrieben.

Wichtig ist das eigentlich erst dann, wenn du auf die Performance achten musst. Aber es ist eine gute Angewohnheit, diesen Puffer von vornherein zu verwenden.

    public static void writeFileViaFileWriterAndBufferedWriter( String filename) throws IOException {
        File f = new File(filename);
        FileWriter fw  = new FileWriter(f);
        BufferedWriter bw = new BufferedWriter(fw ); 
        bw.write("write a lot of data");
        bw.close();
        // check whether this works
        // => Exception in thread "main" java.io.IOException: Stream closed
        // so: bw.close passes this to the unterlying file writer 
        fw.write("write after close");
    }

Was bedeuten die letzten beiden Zeilen? Hier wollte ich ausprobieren, ob es nötig ist, am Ende nicht nur den BufferedWriter zu schließen, sondern auch den FileWriter. Es stellt sich heraus: das erledigt der BufferedWriter schon ganz allein.

heiko

Dipl.-Ing. Heiko Evermann

Vorheriger Artikel