首页 > 解决方案 > 将进程标准输出传递给外部函数

问题描述

我正在尝试实现一个函数,该函数启动一个进程并将其标准输出返回为InputStream.

def getStuff(): InputStream = ???

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

标签: scalaprocessbuilder

解决方案


您可以将命令的输出通过管道传输到OutputSteamwith #>。然后你只需要复制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"

推荐阅读