我使用Apache exec lib运行以下命令。
wmic LOGICALDISK GET Name,ProviderName /FORMAT
此命令返回所有映射驱动器及其映射的列表。当我从命令行运行它时,它工作得很好。当我从java中运行它时,它返回前面的2个驱动器和中间列出的1个驱动器。
我已经将流传输到stdout,使用了流gobbler等。我还有其他几个命令,我运行的工作正常,我没有问题地阅读流。我很难过。有任何想法吗?编码可能吗?我以前从未遇到过这个问题。
哦,我还使用ProcessBuilder,Runtime.exec和DefaultExecutor运行。结果相同。
感谢。
答案 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;
}