【问题标题】:Getting output from cmd command in java从java中的cmd命令获取输出
【发布时间】:2019-04-11 10:02:10
【问题描述】:

我正在尝试获取与 Java 中的文件类型关联的 exe。我通过启动一个执行 assoc 的 cmd 进程并尝试捕获它的输出来做到这一点。现在这是出了问题的地方,我得到了以下几行,但没有别的:

Microsoft Windows [Version 10.0.17134.648]
(c) 2018 Microsoft Corporation. All rights reserved.

这是我的代码:

        String[] commands = {"cmd", "assoc .txt"};
        final ProcessBuilder pb = new ProcessBuilder(commands);
        Process pr = pb.start();
        pr.getOutputStream().close();

        BufferedReader errorReader = new BufferedReader(new InputStreamReader(pr.getErrorStream()));

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(pr.getInputStream()));

        String s;
        while((s = stdIn.readLine()) != null) {
            System.out.println(s);
        }

        String error;
        while((error = errorReader.readLine()) != null) {
            System.out.println(error);
        }

【问题讨论】:

    标签: java windows cmd process


    【解决方案1】:

    您的问题可能是您使用了BufferedReader.readLine()。这将等待换行符,您的进程可能不会发送该换行符。 此外,您在一个线程中运行所有内容,这可能会妨碍您捕获输出。 看看https://examples.javacodegeeks.com/core-java/lang/processbuilder/java-lang-processbuilder-example/上的3.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2012-02-18
      相关资源
      最近更新 更多