У меня есть следующий код:
ProcessBuilder pb = new ProcessBuilder(CMD_ARRAY);
process = pb.start();
FrameworkLogger.log("Waiting for 120 seconds");
boolean code = process.waitFor(120, TimeUnit.SECONDS);
System.out.println("code is "+code);
output = getStream(process.getInputStream());
System.out.println("getInputStream:"+output);
error = getStream(process.getErrorStream());
System.out.println("getErrorStream:"+error);
public String getStream(InputStream inputStream) throws Exception {
StringBuilder sb = new StringBuilder();
BufferedReader br1 = null;
String line;
try {
br1 = new BufferedReader(new InputStreamReader(inputStream));
line = null;
while ((line = br1.readLine()) != null) {
sb.append(line + System.getProperty("line.separator"));
}
} finally {
br1.close();
}
return sb.toString();
}
Я всегда получаю истинный код, но поток из getInputStream () пуст, а желаемый поток находится в getErrorStream (). Почему это могло происходить? Как получить желаемый поток в getInputStream ()?
@HovercraftFullOfEels, можете ли вы уточнить пример кода?
Сам я обычно создаю класс StreamGobbler, который реализует Runnable для обработки обоих потоков.




Разве вам не нужно использовать отдельные потоки для захвата всего вывода потока?