Konsolen IO

Konsole IO

  • Ein Sonderfall von Streams ist das Lesen und Schreiben von Standard-In und Standard-Out
  • Normalerweise sind diese beiden Streams mit der Konsole (Bildschirm / Tastatur) verbunden
  • Durch Ein- und Ausgabeumleitung können die Daten aber mit anderen Quellen und Senken verbunden sein
  • Der Zugriff auf die Standard-Streams ist über System möglich
    • System.out - PrintStream der mit der Konsole verbunden ist (stdout)
    • System.err - PrintStream der mit der Konsole verbunden ist (stderr)
    • System.in - InputStream der mit der Konsole verbunden ist
  • Man kann keine einzelne Zeichen mit System.in.read() lesen

Für die Textausgabe besitzt jeder Computer eine sogenannte Konsole. Auf dieser können Daten ausgegeben und von ihr eingelesen werden. Für die Ausgabe gibt es zwei Kanäle Standard-Out (stdout) und Standard-Error (stderr). Wie die Namen schon deutlich machen, werden normale Ausgaben auf Standard-Out, Fehler aber auf Standard-Error geleitet. Obwohl beide Kanäle auf derselben Konsole herauskommen ist die Unterscheidung wichtig, wenn es zur Ausgabeumleitung kommt. Hier kann man nämlich die Kanäle getrennt in eine Datei oder ein anderes Programm umleiten: Die normalen Ausgaben werden umgeleitet, die Fehler bleiben aber sichtbar.

Für die Eingabe gibt es nur einen Kanal namens Standard-In (stdin), der normalerweise mit der Tastatur verbunden ist.

Beispiel: Echo

public class Echo {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(
                new InputStreamReader(System.in));

        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
}
> cat /tmp/ipsum.txt | java -cp . pr22010.console.Echo
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nulla laoreet, sem vel mollis imperdiet, sapien mauris
sollicitudin arcu, sed viverra nulla dui at est.

Beispiel: Umleitung von System.out

PrintStream ps = new PrintStream("/tmp/umleitung.txt");
System.setOut(ps);

System.out.println("Hallo, das kommt ja gar nicht raus...");

ps.close();
> cat /tmp/umleitung.txt
Hallo, das kommt ja gar nicht raus...

Copyright © 2025 Thomas Smits