没有得到完整的输出java exec

时间:2014-03-20 18:42:27

标签: java runtime exec wmi

我使用Apache exec lib运行以下命令。

wmic LOGICALDISK GET Name,ProviderName /FORMAT

此命令返回所有映射驱动器及其映射的列表。当我从命令行运行它时,它工作得很好。当我从java中运行它时,它返回前面的2个驱动器和中间列出的1个驱动器。

我已经将流传输到stdout,使用了流gobbler等。我还有其他几个命令,我运行的工作正常,我没有问题地阅读流。我很难过。有任何想法吗?编码可能吗?我以前从未遇到过这个问题。

哦,我还使用ProcessBuilder,Runtime.exec和DefaultExecutor运行。结果相同。

感谢。

1 个答案:

答案 0 :(得分:0)

stdbuf -o0 wmic LOGICALDISK获取名称,ProviderName / FORMAT |猫

http://www.inreto.de/ffp/0.7/arm/packages/coreutils-8.14-arm-1.txz

下载stdbuf

或者也许:

public static String execCmd(String cmd) throws java.io.IOException {
    Process proc = Runtime.getRuntime().exec(cmd);
    java.io.InputStream is = proc.getInputStream();
    java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
    String val = "";
    if (s.hasNext()) {
        val = s.next();
    }
    else {
        val = "";
    }
    return val;
}

从:https://stackoverflow.com/a/20624914/264181