2016-05-16 222 views
-1

在java中,如何执行外部命令(例如,在windows中的cmd或Linux中的terminal),并在命令执行后捕获结果?如何执行外部命令并捕获输出?

+0

目前还不清楚你有什么问题。查看[最小化,完整和可验证的示例](http://stackoverflow.com/help/mcve),并向我们展示您迄今为止所做的以及您的期望。 – gfelisberto

+0

@gfelisberto我已经编辑了他的问题,以便更清楚。 – 2016-05-16 09:30:40

+0

网络中有数百个示例,以及关于如何执行此操作的SO。目前还不清楚OP与“经典”解决方案存在哪些问题。 – 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()); 
}