我想执行此命令“dot -Tpng overview.dot> overview.png”,用于通过Graphviz生成图像。
scala中的代码:
Process(Seq("dot -Tpng overview.dot > overview.png"))
它不起作用。 我还想在scala中打开这个图像。我在Ubuntu下工作。默认情况下,图像查看器将打开图像。但是我在终端输入“eog overview.png”,报告错误
** (eog:18371): WARNING **: The connection is closed
因此,我不知道如何让scala打开这张图片。
提前致谢。
答案 0 :(得分:4)
您无法在命令字符串中使用stdout
重定向>
。您应该使用#>
和#|
运算符。请参阅process
包documentation中的示例。
这会将test
写入test.txt
:
import scala.sys.process._
import java.io.File
// use scala.bat instead of scala on Windows
val cmd = Seq("scala", "-e", """println(\"test\")""") #> new File("test.txt")
cmd.!
在你的情况下:
val cmd = "dot -Tpng overview.dot" #> new File("overview.png")
cmd.!
或者只是这个(因为dot
接受输出文件名为-ooutfile
):
"dot -Tpng overview.dot -ooverview.png".!