Dokumentacja dla scala.sys.process zawiera przykłady, jak przekierować adres URL lub plik do procesu (stdin). Ale w jaki sposób można przekierować ciąg znaków?Przekierowanie ciąg do scala.sys.process
Używam Scala 2.9.
Dokumentacja dla scala.sys.process zawiera przykłady, jak przekierować adres URL lub plik do procesu (stdin). Ale w jaki sposób można przekierować ciąg znaków?Przekierowanie ciąg do scala.sys.process
Używam Scala 2.9.
Oprócz File
lub URL
można również dostarczyć InputStream
do ProcessBuilder
.
Istnieje wiele sposobów przekonwertowania String
na InputStream
. W poniższym przykładzie używam ByteArrayInputStream
i String.getBytes
.
Jako przykład uruchomię dobry stary cat
z zestawem wejściowym do zawartości 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 = [email protected]
scala> val out = (cmd #< is).lines_!
out: Stream[String] = Stream(hello, ?)
scala> out.foreach(println)
hello
world
Aby uzyskać ProcessBuilder patrz scaladoc
http://www.scala-lang.org/api/current/scala/sys/process/ProcessBuilder.html
scala.sys.process.Process # zastosowanie ma argumentów odmian tym jeden ciąg znaków.
Mam nadzieję, że ci pomogę.