# Wie parameter von java aus an anderes Programm übergeben?



## nervousfinger (18. Dez 2005)

Hallo!

Ich habe folgendes Problem...
Ich programmiere gerade ein GUI für eine Konsolenanwendung.
Nun nimmt diese Konsolenanwendung über stdin Daten entgegen bzw gibt über stdout Daten aus.
wie ich die ausgegebenen Daten im Java Programm, welches das Andere Programm aufruft auswerten kann weis ich, nicht aber wie man dem anderen Programm Daten von java aus übergibt.

in der normalen Linux konsole geht das so:
echo "Hier sind die Daten" | Programm

weil das GUI plattform unabhängig werden soll kann ich nicht einfach eine zeile wie die obige von java aus ausführen...
habe versucht erst das programm auszuführen und direkt danach per System.out.println die Daten zu übergeben aber das ist definitiv falsch ;(

hat jemand einen tip?


grüße
Frank


----------



## MPW (18. Dez 2005)

ähm....warum machst du keine direkte Kommunikation?

Du rufst einfach die Methoden des anderen Programms direkt aus Java auf und fertig.
Das was du da vorhast ist wie von hinten durch die Brust ins Auge...


----------



## nervousfinger (18. Dez 2005)

soweitich weiss kann ich bei dem programm die methoden nicht von externen programmen aufrufen, es muss mit bestimmten parametern und daten gestartet werden wobei die daten über stdin vom programm gelesen werden


----------



## Roar (18. Dez 2005)

MPW hat gesagt.:
			
		

> Du rufst einfach die Methoden des anderen Programms direkt aus Java auf und fertig.



kannst du mir mal erklären wie das gehen soll?  :? 

@topic: über Process#getInputStream() getOutputSream() und getErrorStream() komsmt du an die streams in die du daten schicken und meldungen auslesen kannst.


----------



## MPW (18. Dez 2005)

Mir ist schon klar, dass das andere Programm das auch unterstützen muss, aber ich hab' das so verstanden, dass beide Programme von ihm selber sind, also kann er die einfach umschreiben.(Ich würde es halt so machen, da das finde ich einfacher zu handeln ist)

Aber das mit den Streams geht natürlich auch, wenn man das möchte.


----------



## nervousfinger (18. Dez 2005)

getOutputSream() gibt mir ja leider nur den eigenen output wieder, wenn ich es richtig verstanden habe...
aber wie erzeuge ich diesen output?
habe ein wenig gesucht und einen BufferedOutputStream gefunden... ist das die lösung...
habe leider keine richtige dokumentation dazu gefunden? kann mir jemand helfen?


----------



## Roar (18. Dez 2005)

nervousfinger hat gesagt.:
			
		

> getOutputSream() gibt mir ja leider nur den eigenen output wieder, wenn ich es richtig verstanden habe...


hä? getOutputStream() liefert dir stdin des programms, in den kannst du rumschrieben.


----------



## nervousfinger (18. Dez 2005)

stimmt... war müll was ich erzählt hab... 
habs jetzt rausgefunden und so gelöst:


```
Process prcs = rt.exec(command);
if (output != null){
  OutputStreamWriter osw = new OutputStreamWriter(prcs.getOutputStream());
  osw.write(output);
  osw.flush();
  osw.close();
}
```

und es funzt...
allerdings nur wenn ich am ende osw.close aufrufe...
danke für eure hinweise!

PS.: jetzt geh ich erstmal schlafen 
grüße
Frank


----------

