Gefilterten Stream über die Konsole ausgeben

Diskutiere Gefilterten Stream über die Konsole ausgeben im Java Basics - Anfänger-Themen Bereich.
J

javarex

Hallo,

ich habe eine Klasse CompressingOutputStream, die von FilterOutputStream abgeleitet ist erstellt. Diese überschreibt die Methode write(byte[] b, int off, int len) der Superklasse. In der überschriebenen Methode werden die Bytes gemäß der Lauflängenkomprimierung(run length encoding) komprimiert.
Nun möchte ich in einer seperaten Klasse über die Standard-Eingabe (also die Konsole) eine Bytefolge entgegennehmen und diese über die Standard-Ausgabe ausgeben.
Mein Ansatz hierfür wäre folgender:

Java:
int line;
CompressingOutputStream out = new CompressingOutputStream(
                new BufferedOutputStream(new PrintStream(System.out)));
        BufferedInputStream in = new BufferedInputStream(System.in);
while((line=in.read(bytearray))>-1) {
          out.write(bytearray, 0, line);
          }
Ich kann jetzt zwar beliebig viele Bytes eingeben, allerdings wird die Eingabe nie beendet. Ich kann ununterbrochen weitere Bytes eingeben, wenn ich Enter drücke und die komprimierte Sequenz wird nie angezeigt.

Woran liegt das und was kann man dagegen tun?

Danke für eure Hilfe!
 
T

Tobias-nrw

BufferedInputStream.read(buffer); ist gepuffert und liefert deswegen nicht -1 wenn nichts gelesen wurde sondern 0. Also vergleichst Du besser stattdessen auf != 0. lg
 
Thema: 

Gefilterten Stream über die Konsole ausgeben

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben