Передача процесса stdout во внешнюю функцию - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь реализовать функцию, которая запускает процесс и возвращает его стандартный вывод InputStream.

def getStuff(): InputStream = ???

В Java это довольно легко сделать, но я не могу понять, как это сделать, используя sys.process в Scala.

1 Ответ

3 голосов
/ 30 сентября 2019

Вы можете передать вывод команды в 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"
...