Wie kann man eine Eingabe von der Tastatur direkt in eine Datei schreiben?

Ein BufferedReader in Kombination mit einem InputStreamReader ermöglicht die Eingabe über die Tastatur. Ein FileWriter-Objekt speichert diesen dann in einer Datei ab.

Die Methode liesUndSchreibe() enhält einen try-catch-Block, der Probleme bei den Ein-/Ausgabeprozessen abfängt. Innerhalb existiert eine Endlosschleife, in der ein BufferedReader mit seiner Methode read() einzelne char über einen InputStreamReader von der Tastatur liest solange das Programm läuft. Ein FileWriter schreibt diese sofort in die gewünschte Datei.
Dem Konstruktor des FileWriters werden hier zur Objektbildung zwei Parameter übergeben: der Dateipfad und ein boolscher Wert. Dieser bewirkt, dass die gelesenen char an den bestehenden Dateiinhalt angefügt werden und diesen nicht jedes Mal überschreiben.
Die Methode BufferedReader.read() gibt einen (Unicode-) int-Wert zurück. Über eine if-Verzweigung werden die eingegebenen Werte überprüft und das Programm nach Eingabe von 'q' und <return> nach Schließen der Datei beendet.

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class IODemo {

    /*
     * liest Text einschl. Zeilenumbr&uuml;chen von der Konsole und schreibt
     * diesen in eine Text-Datei. q <return> beendet das Programm und schließt
     * die Datei
     */
    public static void liesUndSchreibe() {
        System.out.println("Bitte etwas eingeben und mit Return abschliessen.\n('q' beendet das Programm.)");
        BufferedReader tastaturInput = new BufferedReader(new InputStreamReader(System.in));
        FileWriter out = null;
        int t;
        try {
            out = new FileWriter("datei.txt", true);
            while (true) {
                t = tastaturInput.read();
                if (t == (char) 'q') {
                    out.close();
                    System.out.println("Programm wird beendet!");
                    System.exit(0);
                }
                out.write(t);
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            try {
                if(out != null) out.close();
                if(tastaturInput != null) tastaturInput.close();
            } catch (IOException ioe){}
        }
    }

    public static void main(String[] args) {
        liesUndSchreibe();
    }
}

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.