system out zu string?

oldshoe

Bekanntes Mitglied
Hallo,
ich nutze Methoden einer .jar leider sind fast alle vom Typ void und es werden sämtliche Ausgaben automatisch auf der Console ausgegeben.
Ist es möglich diese irgendwie in einen String abzuleiten, also nutzbar zu machen?

Schon mal vielen Dank...:autsch:
 
T

Tomate_Salat

Gast
Ich bin mir nicht sicher, ob das auch für die Jar gilt, sollte aber:
Du brauchst zwei Stream: PipedInputStream und PipedOutputStream. Diese kannst du näml. miteinander verbinden. Dann setzte du System.setOut() auf den Pipedoutputstream. Das wird dann im Prinzip weitergeleitet an PipedInputStream und das kannst du dann als String behandeln.

MFG

Tomate_Salat
 
T

Tomate_Salat

Gast
Hier ein Beispiel:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;


public class PipedTest 
{
	public PipedInputStream 	pin;
	public PipedOutputStream	pout;
	
	private IHandler 			handler;	
	private boolean 			run;
	
	public PipedTest(IHandler handler) throws IOException 
	{
		run = true;
		pout= new PipedOutputStream();
		pin	= new PipedInputStream(pout);		
		
		this.handler	= handler; 
		
		System.setOut(new PrintStream( pout ));		
		
		start();
	}
	
	public void start()
	{
		new Thread()
		{
			public void run() 
			{
				while(run)
				{
					try
					{								
						BufferedReader reader	= new BufferedReader( new InputStreamReader( pin ));
						String out				= "";
						
						while(reader.ready())
						{
							out	= reader.readLine();
							
							if(out.trim().length() > 0)
								handler.handleInput(out);
						}												
					}
					catch(IOException e)
					{
						e.printStackTrace();
					}
				}
			};
		}.start();		
	}	
	
	public void kill()
	{
		run	= false;
	}
	
	public static void main(String[] args)
	{
		IHandler	h	= new IHandler()
		{

			@Override
			public void handleInput(String rslt) 
			{
				System.err.println("INPUT: " + rslt);
			}
			
		};
		
		try 
		{
			PipedTest pipe = new PipedTest(h);		
			System.out.println("Hallo");
			System.out.println("du");
			System.out.println("da");
			pipe.kill();
		}
		catch (IOException e) 
		{
			e.printStackTrace();
		} 							
	}
}

interface IHandler
{
	public void handleInput(String rslt);
}

Ausgabe
Code:
INPUT: Hallo
INPUT: du
INPUT: da

Anmerkung Performence mäßig ist das oben allerdings schrott ;-). Könntest z.b. sagen er soll nur alle halbe sekunde oder so drauf hören, das macht einen merklichen Unterschied, weis aber nicht wie es da mit der Verlustrate ausschaut, habe in dieser Richtung relativ wenig zu tun. Wenn jmd prinzipielle Optimierungsmöglichkeiten kennt, als her damit ;-)
 
Zuletzt bearbeitet von einem Moderator:
T

Tomate_Salat

Gast
Oder du schreibst dir einfach einen eigenen Outputstream:
Java:
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;

import javax.swing.JOptionPane;

public class OSGS
	extends OutputStream
{
	private boolean read	= false;
	private String 	out		= null;
	
	@Override
	public void write(int b) throws IOException
	{
		if(read)
			out += (char) b;
	}	
	
	@Override
	public synchronized void write(byte[] b, int off, int len) throws IOException
	{
		read	= !read;
		 
        // Experimentell(!) in den Test funktioniert das
		if(read)
			out = "";
		else
			notifyAll();
		
		super.write(b, off, len);
	}
	
	public synchronized String getSystemOut() throws InterruptedException
	{
		while(out == null)
		{
			wait();
		}
		
		String rslt	= out;
		out			= null;
		
		return rslt;
	}
	
	public static void main(String[] args)
	{
		final OSGS osgs	= new OSGS();
		System.setOut( new PrintStream( osgs ) );
		
		Thread receiver	= new Thread()
		{
			public void run() 
			{
				boolean run	= true;
				
				while(run)
				{
					try
					{
						String str	= osgs.getSystemOut();
						System.err.println("Received: " + str);
					} 
					catch (InterruptedException e)
					{
						run	= false;
					}
				}
			};
		};
		
		receiver.start();
		
		for(int i=0; i<3; i++)
		{
			String get	= JOptionPane.showInputDialog("Message:");
			System.out.println(get);
		}
		
		receiver.interrupt();
	}
}

ist performencemäßig wesentlich besser als das oben stehende

MFG

Tomate_Salat
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C System.out in String schreiben Java Basics - Anfänger-Themen 2
R System.exit mit String als Rückgabedatentyp Java Basics - Anfänger-Themen 3
D System.out.println Java Basics - Anfänger-Themen 1
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
paulen1 Methoden Unerwünschte Ausgabe bei System.out.print in For-Schleife Java Basics - Anfänger-Themen 8
M Keine Ausführung von System.out.println() Java Basics - Anfänger-Themen 3
O System.out array Java Basics - Anfänger-Themen 4
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
H Befehl wird nicht ausgeführt - System.out.println Java Basics - Anfänger-Themen 3
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
S Anweisungen verstehen System.out.print/println Java Basics - Anfänger-Themen 2
B Warum werden meine System.out.println's übersprungen? Java Basics - Anfänger-Themen 9
I System.currentTimeMillis() nutzen Java Basics - Anfänger-Themen 2
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
B Input/Output System.out.print mit und ohne "" Java Basics - Anfänger-Themen 5
T System.out.println() Java Basics - Anfänger-Themen 5
M System.property persistieren Java Basics - Anfänger-Themen 6
N (Java) Regristrierung und Login System mit einer Datenbank Java Basics - Anfänger-Themen 5
A Input/Output System.out Ausgabe aktualisieren, ohne Konsole vollzuspamen Java Basics - Anfänger-Themen 2
R Input/Output Frage zu System.out.println Java Basics - Anfänger-Themen 5
S System.out.printIn("Hello, World!"); Java Basics - Anfänger-Themen 3
A Passwort System Java Basics - Anfänger-Themen 4
N Input/Output System.in funktioniert nicht Java Basics - Anfänger-Themen 4
S Input/Output System.out.println - Manipulieren bzw. Alternative..? Java Basics - Anfänger-Themen 2
E Was ist die JRE System Library? Java Basics - Anfänger-Themen 3
V System.out.println zu JTextArea Java Basics - Anfänger-Themen 6
V OOP System.out.println(Objekt) Java Basics - Anfänger-Themen 3
D int x in System.out.println(), aber wie? Java Basics - Anfänger-Themen 1
J Variablen Komsiche System.in.read() return-value? Java Basics - Anfänger-Themen 3
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
N System Proxy verwenden Java Basics - Anfänger-Themen 0
C system.out.printf mit streams benutzen Java Basics - Anfänger-Themen 7
L system.print.out geht nicht Java Basics - Anfänger-Themen 11
D Ausgabe einer Matrix mit System.out.println Java Basics - Anfänger-Themen 6
F System kann die Datei nicht finden Java Basics - Anfänger-Themen 7
R ArrayList - System.out.println nur einmal, statt 10 mal Java Basics - Anfänger-Themen 5
M Verwendung von System.exit(0) problematisch? Java Basics - Anfänger-Themen 1
D system.out.println >> JTextArea Java Basics - Anfänger-Themen 1
O Frage zu System.out.println() Java Basics - Anfänger-Themen 1
G System.out.printf geht nicht Java Basics - Anfänger-Themen 6
A System.out.println() - Aufbau Java Basics - Anfänger-Themen 1
D JDK installieren No JVM could be found on your system. Java Basics - Anfänger-Themen 9
Z System(einstellungen) per Java ändern/Steuern | Betriebssystembezogen Java Basics - Anfänger-Themen 7
M Variablen Ausgabe bei System.out.format? Java Basics - Anfänger-Themen 3
FrankR2 Grundsätzliches Verständnisproblem: Java 32/64-bit; Windows 7/8, 32/64-bit-System Java Basics - Anfänger-Themen 5
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
J Umgang mit System.out.println() und .print() Java Basics - Anfänger-Themen 6
W Input/Output System.in.read erzeugt nicht, was ich will Java Basics - Anfänger-Themen 1
C Input/Output System.in.read() gibt nicht -1 zurück? Java Basics - Anfänger-Themen 3
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
G classname.System.out.println(); ? Java Basics - Anfänger-Themen 2
H Einfluss von System.out auf Programm Java Basics - Anfänger-Themen 2
K System.currentTimeMillis() und die Sommerzeit Java Basics - Anfänger-Themen 5
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
G Thread stoppen mit System.in.read() Java Basics - Anfänger-Themen 13
M CSV-File aus datei system einlesen Java Basics - Anfänger-Themen 3
R Char wird in System.out.print(); nicht ausgegeben Java Basics - Anfänger-Themen 6
T System.out.print : Frage zu Aufbau Java Basics - Anfänger-Themen 4
P Update System Java Basics - Anfänger-Themen 16
T If ; else error on system token delete Java Basics - Anfänger-Themen 5
M System.getProperty("java.vm.version") liefert build-Version Java Basics - Anfänger-Themen 4
O If in System.out.println Java Basics - Anfänger-Themen 11
J HILFE Benutzen einer Klasse aus JRE System Library Java Basics - Anfänger-Themen 4
T Erste Schritte import java.lang.System.out Java Basics - Anfänger-Themen 4
N Erste Schritte Ausgabe in System.out Java Basics - Anfänger-Themen 13
D Scanner(System.in) Schleife Java Basics - Anfänger-Themen 7
G Input/Output System.in.read & Scanner Java Basics - Anfänger-Themen 2
H System.out umleiten Java Basics - Anfänger-Themen 5
J Erste Schritte System.out.print (Fehlermeldung) Java Basics - Anfänger-Themen 14
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
lulas[]args Alternative zu System.err.println(); Java Basics - Anfänger-Themen 5
X Eclipse System.out.print fehler Java Basics - Anfänger-Themen 5
K char-int-Addition in System.out.print Java Basics - Anfänger-Themen 3
O Tabelle Formatieren mit system.out.format Java Basics - Anfänger-Themen 11
F System.getProperty("line.separator") funkt. nicht Java Basics - Anfänger-Themen 4
N Erste Schritte System.err und System.out Java Basics - Anfänger-Themen 5
Z System.out.format, Hilfe. Java Basics - Anfänger-Themen 14
C System.out.println Java Basics - Anfänger-Themen 4
G Input/Output System.err zusätzlich in Datei schreiben Java Basics - Anfänger-Themen 27
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
S Input/Output Neuen InputStream System.in setzen Java Basics - Anfänger-Themen 11
I Input/Output System.out.println formatierung? möglich? Java Basics - Anfänger-Themen 2
J Schleife und system.exit(); Java Basics - Anfänger-Themen 2
ruutaiokwu System.err.print(ln) macht ein durcheinander??! Java Basics - Anfänger-Themen 8
D Frage zu System.out.println() Funktion Java Basics - Anfänger-Themen 6
J System.out - Zwischenablage Java Basics - Anfänger-Themen 5
T System.out.printf Zeilenumbruch nach x Stellen Java Basics - Anfänger-Themen 4
Guybrush Threepwood System.exit(int status) Java Basics - Anfänger-Themen 3
L Kein System.out Java Basics - Anfänger-Themen 14
M System.nanoTime Java Basics - Anfänger-Themen 3
F System.out.printIn Java Basics - Anfänger-Themen 15
jgh System.out finden Java Basics - Anfänger-Themen 4
hdi System.exit() Status Code in Eclipse? Java Basics - Anfänger-Themen 2
D Problem mit System.out Java Basics - Anfänger-Themen 7
J Fragen zu System.out.print und charAt Java Basics - Anfänger-Themen 3
C System.currentTimeMillis Java Basics - Anfänger-Themen 5
C System.currentTimeMillis(); Java Basics - Anfänger-Themen 13

Ähnliche Java Themen


Oben