如何用Java编写将执行另一个程序的程序?此外,该程序的输入应该从我们的程序中提供,该程序的输出应该写入文件.
这是我获取输出的一小部分代码:
Process p = Runtime.getRuntime().exec("C:\\j2sdk1.4.0\bin\\helloworld.java"); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); while ((line = input.readLine()) != null) System.out.println(line); input.close();
这是我的一组代码,但这会抛出一个IOException
.
Java为此提供的API是ProcessBuilder.设置工作目录和传递参数相对简单.
有点棘手的是传递STDIN并读取STDERR和STDOUT,至少对于它的非平凡大小,因为你需要启动单独的线程以确保清除相应的缓冲区.否则,您调用的应用程序可能会阻塞,直到它可以写入更多输出,如果您还等待该进程完成(不确定STDOUT被读取),您将死锁.