从Java程序运行系统命令时没有输出

时间:2014-02-22 08:58:04

标签: java stdio

这是尝试运行系统命令的代码:

String command = "java -cp 1outinstr;out Main";
Process p      = Runtime.getRuntime().exec("cmd /c " + command);

我的问题是我无法看到命令的输出。

2 个答案:

答案 0 :(得分:5)

命令运行正常,它只是没有连接到控制台。

如果你想看到命令的输出,你必须自己打印:

String command = "java -cp 1outinstr;out Main";
Process p = Runtime.getRuntime().exec("cmd /c " + command);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(
        p.getInputStream()));

BufferedReader stdError = new BufferedReader(new InputStreamReader(
        p.getErrorStream()));

// read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
    System.out.println(s);
}

// read any errors from the attempted command
System.out
        .println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
    System.out.println(s);
}

code taken from another answer

如果您想了解更多信息,请参阅standard streams

  

在计算机编程中,标准流是预先连接的输入和   计算机程序与其环境之间的输出通道   (通常是文本终端)开始执行时。三个I / O.   连接称为标准输入(stdin),标准输出   (stdout)和标准错误(stderr)。 - 来自维基百科

答案 1 :(得分:0)

试试这个

 String command="java -cp 1outinstr;out Main"
    Process p = Runtime.getRuntime().exec( // "cmd - for windows only"
                        "cmd /c " + command);
    BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()))
    while(in.readline != null)
    {
    String output = in.readline();
    System.out.println(output);
    }