如何在Windows中使用Runtime.getRuntime()。exec(命令)?

时间:2014-04-22 19:34:43

标签: java linux windows

如何在Windows中使用Runtime.getRuntime()。exec(命令)?

1.
command = "cat data.json"; // works in linux terminal
Runtime.getRuntime().exec(command) // runs in linux => Runs OK

2.
command = "type data.json"; // works in windows cmd
Runtime.getRuntime().exec(command) // runs in windows => Fails to run

3.
command = "cmd /C type data.json"; // works in windows cmd
Runtime.getRuntime().exec(command) // runs in windows => Runs OK
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); // Output is empty

在第三种情况下,input.readLine()的输出为空,但如果我使用命令"输入data.json"在cmd中,它将以与使用" cat data.json"在linux上相同的方式打印json。我对发生的事感到困惑?我想在Windows和Linux上运行COMMAND。任何帮助表示赞赏!

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用ProcessBuilder重定向流程上的错误流。在所有可能的情况下,命令都写到STDErr。您还可以使用Process.getErrorStream()获取该流。