BufferedInputStream bzw. BufferedOutputStream

Genau, System.out und in sind (in Konsolenprogrammen)
spezielle, schon von Anfang an geöffnete Streams,
die statt Dateien/Sockets/etc. eben die Konsole betreffen.

Was bei out rausgeschrieben wird wird eben ausgegeben,
mit in liest man Eingabe von der Tastatur.

Weil die Tastatur ja doch keine Datei ist, sind bei in ein paar prinzipielle Sachen anders.
Es ist zb. nicht möglich, die Dateilänge abzufragen. Klar.
Und wenns keine Tastatureingabe vom Benutzer gibt sagt System.in nicht "Dateiende",
sondern wartet auf die Eingabe.
 
vielen Dank.:D

System.out.println(...), dies ist also eine Methode einer Stream-Instanz. Die Ausgabe dieser Methode gibt ja den Text in die Konsole ausgeben. Ist es möglich, dass die Methode den Text in eine Datei ausgibt bzw. schreibt?
 
System.out ist ein Objekt einer Streamunterart namens PrintStream
(oder einer unbekannten Unterart davon.
Erbt aber jedenfalls von Printstream und hat alle Methoden, die der auch hat).

Was der PrintStream (mehr) kann als Bytearrays schreiben
sind eben diese print- und println-Methoden, die Zeilenweise Text(-dateien) schreiben
und nicht nur rohe Bytes, sondern Strings, ints usw. nehmen.

Als "Ziel" nimmt der Printstream beim Erzeugen einen beliebigen anderen Outputstream.
Seine Hauptaufgabe ist also nicht wirklich das Schreiben,
sondern die Umwandlung der ganzen bequem geprinteten Sachen in Bytearrays.
Die werden dann an den Zielstream weitergegeben, das kann dann zB. ein FileOutputStream sein.
(Alternativ kann man dem Printstream auch gleich einen Dateinamen geben
und der macht sich drinnen selbst einen FileOutputStream. Nett.
Die Andere-Stream-Methode bleibt trotzdem wichtig, es gibt ja nicht nur Dateien).

...
Du willst jetzt also alle/manche System.out-Beschreibungen wo anders hinleiten.
Ob man System.out direkt ändern kann weiß ich gar nicht,
würde es besser auch nicht ausprobieren.

Alternative:
Mach eine eigene PrintStream-Variable,
der du je nach Bedarf System.out zuweist oder einen neuen Stream Richtung Datei reinerzeugst.
Die Schreibbefehle machst du dann alle auf diesen Stream.
Java:
PrintStream ausgabe;

ausgabe = System.out;
//oder
ausgabe = new PrintStream(...);

ausgabe.println("Hallo Welt");
 
Zuletzt bearbeitet:
Zurück