java 执行命令

java ProcessBuilder 执行命令, 读取错误流和标准流消息

public class ExecCommand {
  
  public static void main(String[] agrs) throws IOException, InterruptedException {
    List<String> cmd = new ArrayList<>();
    cmd.add("sh");
    cmd.add("-c");
    cmd.add("ls");
    
    ProcessBuilder pb = new ProcessBuilder(cmd);
    // 合并 错误流和标准流
    pb.redirectErrorStream(true);
    Process process = pb.start();
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(process. getInputStream()))) {
        if (process.waitFor() != 0) {
        System.out.println("commond exec error");
      }
      
      String line;
      while ((line = reader.readLine()) != null) {
        System.out.println(line);
      }
      
      // 可以使用 org.apache.commons.io 包下的 IoUtils 读流转换为String
      // IoUtils.tostring(reader);
    }
  }
}

 

posted @ 2022-12-17 16:54  浊酒一杯温如言  阅读(190)  评论(0编辑  收藏  举报