scala.sys.process的文档提供了有关如何将URL或文件重定向到进程(stdin)的示例.但是如何重定向字符串呢?
我使用Scala 2.9.
除了一个File或者URL您也可以提供一个InputStream到ProcessBuilder.
有多种方法可以将a String转换为InputStream.在下面我正在使用ByteArrayInputStream和String.getBytes.
作为一个例子,我将运行良好的旧cat输入设置为内容inputString.
scala> import java.io.ByteArrayInputStream
import java.io.ByteArrayInputStream
scala> import scala.sys.process._
import scala.sys.process._
scala> val cmd = List("cat")
cmd: List[java.lang.String] = List(cat)
scala> val inputString = "hello\nworld"
inputString: java.lang.String =
hello
world
scala> val is = new ByteArrayInputStream(inputString.getBytes("UTF-8"))
is: java.io.ByteArrayInputStream = java.io.ByteArrayInputStream@28d101f3
scala> val out = (cmd #< is).lines_!
out: Stream[String] = Stream(hello, ?)
scala> out.foreach(println)
hello
world
Run Code Online (Sandbox Code Playgroud)