将处理标准输出到外部函数

问题描述 投票:1回答:1

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

def getStuff(): InputStream = ???

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

scala processbuilder
1个回答
0
投票

您可以使用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"
© www.soinside.com 2019 - 2024. All rights reserved.