PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java I/O Outputstream ausgeben



D H
31-03-2004, 09:53
Hallo zusammen,
ich tüftle gerade an einem scheinbar einfachen Problem rum und komme nicht weiter:
meine Methode bekommt als Argument einen java.io.OutputStream und soll wenn da was reinkommt (per .println(),...) in eine JTextArea schreiben.
Das kann doch nicht so schwierig sein, oder?!

Grüße,
Dominic

Vispo
31-03-2004, 11:30
wie kommt aus einem ausgangs stream etwas rein....
sorry bin kein profi...... aber normalerweise liest du etwas was draussen ist mit einem input stream und schreibst mit einem output stream..........

So solltest du normalerweise nicht aus einem output stream lesen....

:-S bin aber wirklich kein profi programmierer

MFG vielleicht kann dir wer besser helfen
Vispo

Sym
31-03-2004, 12:39
Hi,

ich weiß leider nicht, was Du mit dem OutputStream möchtest, aber ein JTextArea kannst Du mittels der Methode insert(String text, int position) vollschreiben.

Vielleicht solltest Du nochmal genau beschreiben, was Deine Methode machen soll.

[edit] Ein OutputStream hat keine Methode println() Was genau möchtest Du denn übergeben?

Im übrigen ist ja eigentlich nicht klar, wohin der OutputStream gehen soll, d.h. er kann natürlich auch in einem JTextArea enden. Allerdings bräuchtest Du einen Listener für das Area, damit die Veränderung dann auch angezeigt wird (meines Wissens nach)

Vielleicht hast Du ja das Code-Stück für uns. Dann kann zumindest ich das Problem meist leichter verstehen und vielleicht helfen.

peschmae
31-03-2004, 14:44
Wenn das ein PipedOutputStream währe (ist von OutputStream abgeleitet) ginge das recht einfach.
Man kann nämlich einen PipedOutputStream via connect() mit einem PipedInputStream verbinden, aus dem dann ein zweiter Thread lesen kann, was in den Stream geschrieben wurde. (Zwei Threads sind wegen deadlock-Gefahr nötig, einer langt nicht)

Mit "nur" OutputStream habe ich gerade keine Idee wie du das hinkriegen könntest.

MfG Peschmä

D H
31-03-2004, 15:53
jo erstmal danke für die Ansätze. Bei println() bin ich wohl irgendwie mit dem PrintStream durcheinander gekommen - also bitte ignorieren.
Was ich machen möchte ist folgendes:
Ich habe 2 Threads, wobei der eine an den anderen mit Hilfe eines Streams Text übermitteln soll. Also dachte ich mir folgende:
Ich erzeuge einen OutputStream in Thread 1 und übergebe diesen an Thread 2.
In Thread 1 schreibe ich dann in den OutputStream (mit write()...) und Thread 2 gibt den den Text dann in eine JTextArea.
Für bessere Alternativen bin ich natürlich auch gerne zu haben. Ich bin (noch) kein Profi und die Java I/O ist mir manchmal noch etwas suspekt.

Danke schonmal,
Dominic

anda_skoa
31-03-2004, 17:03
Eine gemeinsam ArrayList verwenden.
Der eine schreibt neue Einträge an einer Seite rein, der andere liest am anderen Ende aus.

synchronize(arraylistObject)

in beiden Threads vor dem jeweiligen Zugriff.

Ciao,
_

peschmae
31-03-2004, 17:50
a propos Alternativen: Wieso überhaupt zwei Threads? Kannst du das nicht einfach direkt dem JTextArea hinzufügen?

MfG Peschmä

D H
31-03-2004, 18:08
Direkt reinschreiben geht nicht (bzw möchte ich nicht). Der 2. Thread soll so eine art Splashscreen bzw Pausenclown sein, der nur debuging Informationen vom eigentlichen Programm bekommt während das beschäftigt ist.