【发布时间】:2010-12-20 06:07:07
【问题描述】:
我有一个需要从 java 程序调用的批处理文件。批处理文件依次调用 EXE。 EXE 程序将返回我要处理的数据。如果 EXE 将数据打印到控制台,则可以按如下方式捕获它。但是当 EXE 完成后返回数据时,我无法捕获它。
ProcessBuilder pb = new ProcessBuilder("foo.bat");
Process p = pb.start();
int exitValue = p.waitFor();
BufferedReader reader;
// System.out.println("Exit Value" + exitValue);
if (exitValue == 0) {
reader = new BufferedReader(new InputStreamReader(p
.getInputStream()));
} else {
reader = new BufferedReader(new InputStreamReader(p
.getErrorStream()));
}
StringBuffer sb = new StringBuffer();
String temp = reader.readLine();
while (temp != null) {
sb.append(temp);
temp = reader.readLine();
}
reader.close();
System.out.println(sb.toString());
我需要如何捕获从批处理文件执行的 EXE 返回的数据?
EXE 基本上是一个 C 程序。当我调用 C 程序时,main 方法返回我想要处理的数据。
【问题讨论】:
-
“退回”是什么意思?进程的退出代码?
-
它不是退出代码。调用EXE时,调用C类main方法,main方法返回数据。
标签: java process batch-file