我想获得一个进程的输出(Git.exe
确切地说)并将其转换为 String 对象。以前有时我的代码被阻止了。然后我发现这是因为该进程ErrorStream
有一些输出,我必须手动捕获它(我对此不感兴趣)。我将代码更改为:
public static String runProcess(String executable, String parameter) {
try {
String path = String.format("%s %s", executable, parameter);
Process pr = Runtime.getRuntime().exec(path);
// ignore errors
StringWriter errors = new StringWriter();
IOUtils.copy(pr.getErrorStream(), errors);
StringWriter writer = new StringWriter();
IOUtils.copy(pr.getInputStream(), writer);
pr.waitFor();
return writer.toString();
} catch (Exception e) {
return null;
}
}
现在它工作得很好,但话又说回来,有时它会在这一行再次被阻止:
IOUtils.copy(pr.getErrorStream(), errors);
.
有什么方法可以让我在git.exe
不碰到块的情况下获得输出?谢谢。