java - 运行时进程 BufferedReader 未输出所有行 (Psexec)

标签 java process bufferedreader psexec

我正在尝试使用 Process InputStream 上的 BufferedReader 将 Psexec 的输出读入 Java,以便在网络上使用,但它只输出第一行。

Runtime rt = Runtime.getRuntime();

    try {
        Process p = rt.exec("C:\\Users\\*****\\Desktop\\PS\\Psexec \\\\" + "******" + " -u ****** -p ****** cmd /c dir D:\\");

        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

        log.add("Computer: " + address);

        String s = null;
        while ((s = stdInput.readLine()) != null) {
            log.add(s);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

发生这种情况的原因是什么?如何解决?

最佳答案

该进程可能会在 stderr 上生成一些输出。 在单独的线程中读取输出流和错误流,或者使用 ProcessBuilder 创建在此之前处理并合并输出流,使用 redirectErrorStream() .

关于java - 运行时进程 BufferedReader 未输出所有行 (Psexec),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374966/

相关文章:

java - Dropwizard 测量频率

java - 在 Spring Boot 应用程序中创建自定义连接池

c - 等到 2 pid 写入 FIFO(命名管道)

java - 如何通过Java程序在windows中查看Tomcat服务是否正在运行或停止?

java - 如何从 JavaDB 读取数据

java - 编译器错误 : Array required, 但发现 java.lang.String

即使输出被重定向,Java 进程也会提前停止

java - 扫描器类和字符串缓冲区

java - BufferedReader 中跳过和重置方法的一些实际用例是什么?

java - 测试非 ASCII 字符在 Java 中不起作用