Wie kann man eine Eingabe von der Tastatur direkt in eine Datei schreiben?
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ü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.