2016-05-16 2 views
-1

В java, как я могу выполнить внешнюю команду (например, в cmd в Windows или в terminal в Linux) и захватить результат, когда команда была выполнена?Как выполнить внешнюю команду и захватить вывод?

+0

Непонятно, какая у вас проблема. Посмотрите на [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) и покажите нам, что вы сделали до сих пор и что вы ожидаете. – gfelisberto

+0

@gfelisberto Я отредактировал его вопрос, чтобы быть более ясным. –

+0

В Интернете есть сотни примеров и здесь, на SO, как это сделать. Неясно, какие проблемы имеет ОП с «классическими» решениями. – gfelisberto

ответ

1

Рассмотрите Apache Commons Exec для этой цели.

It is a simple, но надежная структура для реализации многоплатформенных вызовов командной строки.

Вот пример метода для выполнения команды и получения результата в виде String экземпляра.

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()); 
} 
Смежные вопросы