Gefilterten Stream über die Konsole ausgeben

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!
 
BufferedInputStream.read(buffer); ist gepuffert und liefert deswegen nicht -1 wenn nichts gelesen wurde sondern 0. Also vergleichst Du besser stattdessen auf != 0. lg
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben