java.io.IOException:流关闭(来自groovy)

时间:2018-02-20 13:07:53

标签: groovy process

在groovy中,我试图使用Process运行两次使用git的调用:

def fireCommand(String command) {
  def proc = command.execute()
  proc.waitFor()
  println "Process exit code: ${proc.exitValue()}"
  def result = proc.in.text
  println "Std Err: ${proc.err.text}"
  println "Std Out: ${proc.in.text}"
}


def executeOnShell(String command) {
  fireCommand("git --version")
  fireCommand("git status")
}

但只有第一个电话有效。第二个电话会抛出:

java.io.IOException: Stream closed

根据我的理解,我不会重复使用相同的过程,为什么会出错?

1 个答案:

答案 0 :(得分:3)

当您使用inputStream.textinputStream.getText()方法时,输入流在方法返回结果之前关闭 - 流的内容(作为String)。所以当你打电话时

println "Std Out: ${proc.in.text}"

它试图从已经关闭的同一个流中读取。

println "Std Out: $result"

会好的。