Scala交互式解释器(REPL) - 如何将输出重定向到文本文件?

时间:2012-02-29 05:26:52

标签: scala read-eval-print-loop redirectstandardoutput

是否可能,如果是,它是如何完成的?在Windows或Linux命令行上运行的常用>>>在此上下文中不起作用。

3 个答案:

答案 0 :(得分:11)

您可以通过控制台以编程方式执行此操作:

import java.io.FileOutputStream
import scala.Console

Console.setOut(new FileOutputStream("<output file path>"))

从现在起,所有printprintln都将被定向到此文件

答案 1 :(得分:4)

目前还不清楚您的问题究竟是如何使用这样的东西的。您尝试做的事情的一个例子可能会有所帮助。

这是一个隐式函数,它将添加一个简单的运算符,将任何对象作为String写入文件。 (请注意,我使用>>表示unix样式>,因为>已经在Scala中有意义(“小于”)。如果您使用其他运算符,则可以将其替换为等。)

implicit def anyToFileOutput(self: Any) = new {
  import java.io._
  def >>(filename: String) {
    val f = new BufferedWriter(new FileWriter(filename))
    try {
      f.write(self.toString)
    } finally {
      if (f != null)
        f.close()
    }
  }
}

您可以这样使用它:

scala> List(1,2,3) >> "out.txt"

在包含List(1, 2, 3)

的工作目录中生成一个文件“out.txt”

答案 2 :(得分:0)

看起来对我很好:

dcs@ayanami:~/github/scala (master)$ scala -e "println(2 * 2)" > output
dcs@ayanami:~/github/scala (master)$ cat output
4