不写入Scala文件

时间:2012-07-13 20:51:18

标签: file scala io

我有以下代码,它应该一次写入一行文件,直到达到^ EOF。

import java.io.PrintWriter
import java.io.File
object WF {
  def writeline(file: String)(delim: String): Unit = {
    val writer = new PrintWriter(new File(file))
    val line = Console.readLine(delim)
    if (line != "^EOF") {
      writer.write(line + "\n")
      writer.flush()
    }
    else {
      sys.exit()
    }
  }
}
var counter = 0
val filename = Console.readLine("Enter a file: ")
while (true) {
  counter += 1
  WF.writeline(filename)(counter.toString + ": ")
}

出于某种原因,在控制台上,一切看起来都很好,但是当我实际读取文件时,没有写入任何内容!我的计划有什么问题?

3 个答案:

答案 0 :(得分:3)

每次创建新PrintWriter时,您都会删除现有文件。使用类似FileWriter的内容,它允许您指定要打开文件以进行追加:

val writer = new PrintWriter(new FileWriter(new File(file), true))

这应该有用,虽然这里的逻辑很混乱。

答案 1 :(得分:1)

请改用val writer = new FileWriter(new File(file), true)。第二个参数告诉FileWriter追加到该文件。见http://docs.oracle.com/javase/6/docs/api/java/io/FileWriter.html

答案 2 :(得分:0)

我猜测问题是你忘了关闭作家。