我正在尝试实现一个启动进程并返回其标准输出为InputStream
的函数。
def getStuff(): InputStream = ???
似乎在Java中很容易做到,但是我不知道如何在Scala中使用sys.process
来做到这一点。
您可以使用OutputSteam
将命令的输出通过管道传输到#>
。然后,您只需要将OutputStream
复制到InputStream
:
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"