2013-02-25 181 views
1

我在搞乱Runtime.getRuntime(),但我不认为它真的是我想要的。我如何从java控制台运行控制台应用程序?

我想要一些既有用户输入又有输出到stdout的东西。基本上,我想要一个完整的程序启动。

GRAE

+0

为什么不使用EXEC? – PbxMan 2013-02-25 22:07:25

+0

http://www.javaworld.com/jw-12-2000/jw-1229-traps.html – 2013-02-25 22:07:36

回答

0

这样做:

Process process = Runtime.exec("somecommand.exeorwhatever"); 

将运行一个完全独立的过程。然后你可以使用:

InputStream in = process.getInputStream(); 
InputStream err = process.getErrorStream(); 
OutputStream out= process.getOutputStream(); 
0

您可以使用ProcessBuilder.start()方法创建Process,并利用其输入和输出流。

下面是简单的例子:

public static void main(String[] args) throws Exception { 
    String[] processArgs = new String[]{"ping","google.com"}; 
    Process process = new ProcessBuilder(processArgs).start(); 

    BufferedReader in = new BufferedReader(new InputStreamReader(
      //I'am using Win7 with PL encoding in console -> "CP852" 
      process.getInputStream(), "CP852")); 

    String line; 
    while ((line = in.readLine()) != null) 
     System.out.println(line); 

    in.close(); 
    System.out.println("process ended"); 
}