为什么有时候Java进程生成器只能得到1行的输出?

当你在terminal执行“docker history [id] -q”,你会得到一个idstring列表。

现在我想通过Java程序获取string列表。 但是,有时我只能得到输出的第一行。 (这是随机发生的,当我反复运行相同的命令)。

代码如下所示,任何人都有关于它的想法? 非常感谢!

String[] cmdParaArray = {"docker", "history", ID, "-q"}; ByteArrayOutputStream baos = new ByteArrayOutputStream(); CmdExecutor.execute(cmdParaArray, baos); String imageInfoJsonString = baos.toString(); public static List<String> execute(String[] cmdParaArray, OutputStream os) { try { ProcessBuilder pb = new ProcessBuilder(cmdParaArray) .redirectErrorStream(true); Process proc = pb.start(); InputStream is = proc.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while ((line = reader.readLine()) != null) { if (os != null) { os.write((line + "\n").getBytes()); os.flush(); } } }