0

我有以下代码,它应该一次写入一个文件,直到它到达 ^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 + ": ")
}

出于某种原因,在控制台上,一切看起来都很好,但是,当我真正读取文件时,什么都没有写入!我的程序有什么问题?

4

3 回答 3

3

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

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

这应该可行,尽管这里的逻辑非常混乱。

于 2012-07-13T21:20:08.263 回答
1

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

于 2012-07-13T21:19:48.963 回答
0

我猜问题是你忘记关闭作者了。

于 2012-07-14T00:51:28.043 回答