Process process = null;
InputStream is = null;
BufferedReader reader = null;esetFilePaths = downloadPresetFiles(dir, param.getPresetFileIdList());
}
try {
List<String> consoleList = new ArrayList<>();
process = Runtime.getRuntime().exec(command);
int result = process.waitFor();
is = process.getInputStream();
reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
consoleList.add(line);
}
// 当result=0时执行成功
} finally {
if (process != null) {
process.destroy();
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
}
以上只能获取正常的控制台输出,若想拿到报错的输出,如下
Process process = null;
InputStream is = null;
BufferedReader reader = null;
try {
// 注意,commonds是命令的list集合,例如执行命令 sh xxx.sh,commonds=["sh", "xxx.sh"]
ProcessBuilder processBuilder = new ProcessBuilder(commonds.toArray(String[]::new));
// 合并正常输出流和错误流
processBuilder.redirectErrorStream(true);
process = processBuilder.start();
is = process.getInputStream();
reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
consoleList.add(line);
}
int result = process.waitFor();
// result = 0 时,执行成功
} finally {
if (process != null) {
process.destroy();
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
}