58 Stimmen

Capture von stdout beim Aufrufen von Runtime.exec

Bei Netzwerkproblemen auf Client-Maschinen würde ich gerne in der Lage sein, einige Befehlszeilen auszuführen und die Ergebnisse per E-Mail an mich zu senden.

Ich habe herausgefunden, dass Runtime.exec es mir ermöglichen wird, beliebige Befehle auszuführen, aber das Sammeln der Ergebnisse in einem String ist interessanter.

Ich realisiere, dass ich die Ausgabe in eine Datei umleiten und dann aus der Datei lesen könnte, aber mein Spinnensinn sagt mir, dass es eine elegantere Möglichkeit gibt, es zu tun.

Vorschläge?

0 Stimmen

Schauen Sie sich diesen Artikel an.

2voto

yegor256 Punkte 96888

VerboseProcess Hilfsklasse aus jcabi-log kann Ihnen helfen:

String output = new VerboseProcess(
  new ProcessBuilder("executable with output")
).stdout();

Das einzige, was Sie benötigen:

  com.jcabi
  jcabi-log
  0.7.5

1voto

PaulJWilliams Punkte 18533

Runtime.exec() gibt ein Process-Objekt zurück, aus dem Sie den Output des ausgeführten Befehls extrahieren können.

1voto

Valentin Rocher Punkte 11493

Mit Runtime.exec erhalten Sie einen Prozess. Sie können dann [getInputStream](http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Process.html#getInputStream()) verwenden, um die Standardausgabe dieses Prozesses zu erhalten, und diesen Eingabestrom in einen String umwandeln, beispielsweise durch ein StringBuffer.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X