如何将 ProcessBuilder 的输出重定向到字符串?

新手上路,请多包涵

我正在使用以下代码启动流程构建器。我想知道如何将其输出重定向到 String

 ProcessBuilder pb = new ProcessBuilder(
    System.getProperty("user.dir") + "/src/generate_list.sh", filename);
Process p = pb.start();

我尝试使用 ByteArrayOutputStream 但它似乎没有用。

原文由 Ankesh Anand 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

InputStream 中读取。您可以将输出附加到 StringBuilder

 BufferedReader reader =
                new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ( (line = reader.readLine()) != null) {
   builder.append(line);
   builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();

原文由 Reimeus 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 Apache Commons IOUtils ,您可以在一行中完成:

 ProcessBuilder pb = new ProcessBuilder("pwd");
String output = IOUtils.toString(pb.start().getInputStream(), StandardCharsets.UTF_8);

原文由 Daniel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题