将进程标准输出传递给外部函数
Passing process stdout to outside function
我正在尝试实现一个启动进程的函数,returns 其标准输出为 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"
我正在尝试实现一个启动进程的函数,returns 其标准输出为 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"