将进程标准输出传递给外部函数

Passing process stdout to outside function

我正在尝试实现一个启动进程的函数,returns 其标准输出为 InputStream

def getStuff(): InputStream = ???

在 Java 中似乎很容易做到,但我不知道如何在 Scala 中使用 sys.process 来做到这一点。

您可以使用 #> 将命令的输出通过管道传输到 OutputSteam。然后你只需要复制 OutputStreamInputStream:

import scala.sys.process._
import java.io._
import scala.io.Source

def getStuff(): InputStream = {
  val os   =  new ByteArrayOutputStream
  ("echo 'Hello'" #> os).!
  new ByteArrayInputStream(os.toByteArray());
}

Source.fromInputStream(getStuff()).mkString //"Hello"