2016-05-16 5 views
-1

in Java, wie kann ich einen externen Befehl (wie in cmd in Fenstern oder in terminal in Linux), und erfassen das Ergebnis aus, wenn der Befehl ausgeführt wurde?Wie führe ich einen externen Befehl aus und nehme die Ausgabe auf?

+0

Es ist unklar, welches Problem Sie haben. Werfen Sie einen Blick auf [Minimal, Complete und Verifable Beispiel] (http://Stackoverflow.com/help/mcve), und zeigen Sie uns, was Sie bisher getan haben und was Sie erwarten. – gfelisberto

+0

@gfelisberto Ich habe seine Frage bearbeitet, um klarer zu sein. –

+0

Es gibt Hunderte von Beispielen im Web und hier auf SO, wie man das macht. Es ist unklar, welche Probleme das OP mit den "klassischen" Lösungen hat. – gfelisberto

Antwort

1

Betrachten Apache Commons Exec für diesen Zweck.

It is a simple, aber verlässlicher Rahmen Multi-Plattform-Befehlszeile ruft zu implementieren.

Hier ist die Probe Methode einen Befehl zu erhalten und das Ergebnis als Ausgang String Instanz auszuführen.

import java.io.ByteArrayOutputStream; 
import org.apache.commons.exec.CommandLine; 
import org.apache.commons.exec.DefaultExecutor; 
import org.apache.commons.exec.Executor; 
import org.apache.commons.exec.PumpStreamHandler; 

public String execToString(String command) throws Exception { 
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
    CommandLine commandline = CommandLine.parse(command); 
    DefaultExecutor exec = new DefaultExecutor(); 
    PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream); 
    exec.setStreamHandler(streamHandler); 
    exec.execute(commandline); 
    return(outputStream.toString()); 
}