日曜日, 1月 03, 2016

scala - 外部コマンドの実行

Scalaの外部コマンド実行はJavaのProcessBuilderほぼ同じ.
/**
  * Created by neko32 on 2016/01/03.
  */
object RunCommand {
  def main(args:Array[String]):Unit = {
    import sys.process._
    // execute external command
    val result = "javac -version".!
    println(result)
    // return stdout
    val result2 = "javac -version".!!
    println(result2)
    // via Process or Seq command can be triggered
    val result3 = Seq("javac", "-version").!!
    println(result3)
    val result4 = Process("javac -version").!!
    println(result4)
    // dump stderr
    val result5 = "javac -takorin".lineStream_!.mkString
    println(result5)
    // redirect output to a file
    val result6 = ("javac -version" #> new File("C:\\tmp\\javav")).!
    println(result6)
    // this step may not work on Windows
    assume(new File("C:\\tmp\\javav").exists() &&
           Source.fromFile("C:\\tmp\\javav").mkString.length() > 0, "file should exists!")
  }
}

しかしながらscalaはパイプを用意に実現できたりとより強力である.
scala> ("ls /cygdrive/c/tmp/" #| "grep -i rachmaninov").!!.trim
res1: String =
Rachmaninov_piano3.jpg
Rachmaninov2.jpg

0 件のコメント: