BufferedInputStream zeile einlesen

darkeye2

Bekanntes Mitglied
Hallo, ich habe ein pgramm das über ein socket daten empfängt, normalerweise brauche ich hierbei einen BufferedInputStream, um die daten richtig einlesen zu können, deswegen nutze ich diesen auch.
Nun brauche ich mitten im programm 9 einezelne zeilen, die irgendwie eingelesen werden müssen, dies ist ja mit einen BufferedInputStream nicht möglich, wie stelle ich das am besten an?

Danke für eure Hilfe

PS.: google ich irgendwie falsch oder gibts dazu wirklich nix sinnvolles im netz?
 
InputStream bedeutet bytes, also lies auch bytes,
zähle sie oder achte auf besondere byte-Kombinationen zur Abgrenzung bestimmter Bereiche,

wenn du einen Teil der bytes anders verarbeiten musst, dann sammle/kopiere diese in ein byte-Array,
dann direkte Umwandlung in String per Konstruktor oder mit ByteArrayInputStream einen neuen beliebigen InputStream/Reader darauf anwenden
 
Hallo, ich habe ein pgramm das über ein socket daten empfängt, normalerweise brauche ich hierbei einen BufferedInputStream, um die daten richtig einlesen zu können, deswegen nutze ich diesen auch.
Nun brauche ich mitten im programm 9 einezelne zeilen, die irgendwie eingelesen werden müssen, dies ist ja mit einen BufferedInputStream nicht möglich, wie stelle ich das am besten an?

Danke für eure Hilfe

PS.: google ich irgendwie falsch oder gibts dazu wirklich nix sinnvolles im netz?

Zeilenweise kannst du mit einem Reader lesen. Wie du "mittendrin" feststellst, wann es damit losgehen soll, musst du wohl noch herausfinden.

Wenn ich sage, du googelst falsch, dann habe ich zu 99% Recht, rein statistisch. Nachdem aber deine obigen Anforderungen noch recht schwammig sind, fällt es dir natürlich auch schwer sinnvolle Suchbegriffe zu definieren.
 
also das festestellen, wann ich zeilen einlesen muss ist kein problem, das kann mein programm bereits, das einlesen ist eher das problem. Ich weiß, dass ich zeilen mit einem Reader lesen kann, doch ist das convertieren von BufferedInputStream in einen BufferedReader ist scheinbar net möglich oder ich hab es noch nicht herausgefunden.

Ablauf des programms:
bytes werden gelesen, bis eine bestimmte anweisung ankommt, dann müssen 9 ZEILEN also bis "\r\n" gelesen werden, und dann geht das normale einlesen weiter, bis irgendwann mal wieder die methode aufgerufen wird ...
Ich bin grad an den punkt, dass die Methode aufgerufen wird, nun muss ich nur noch die 9 zeilen einlesen, was sich hier gar net so einfach gestalltet
 
Es sollte nicht so schwer sein von eine Stream selbständig zu lesen und dann den gelesenen Inhalt bis zu einem CR+LF als Zeile zu interpretieren (bekanntes Encoding vorausgesetzt).

Aber auch mit einem Reader sollte es funktionieren: über einen InputStreamReader einen BufferedReader instanziieren, wenn du "mittendrin" angekommen bist. Jetzt neun Zeilen lesen. Danach den Reader nicht mehr benutzen, aber ihn auch nicht schließen. Dann wieder direkt vom Stream lesen. Danach alles schließen... fertig.

P.S.: Das Protokoll auf dem Stream hört sich krank an...
 
Irgendwie komme ich immer noch net weiter, jemand noch eine Idee?
Wie kriege ich es hin, einen BufferedInputStream für eine bestimmte zeit in einen BufferedReader zu convertieren (halt hin und wieder zurück) oder mit einem BufferedInputStream eine Zeile zu lesen, sollte ja eigentlich möglich sein selbst eine methode zu schreiben, die mit nem BIS eine Zeile einlesen kann, aber bin im moment zu blöd dafür.


EDIT: ist es denn möglich, an einem Socket zweimal den InputStream abzugreifen?
 
Zuletzt bearbeitet:

Zurück
Oben