0

^EOF に達するまで、一度に 1 行ずつファイルに書き込む次のコードがあります。

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に、既存のファイルが消去されます。のようなものを使用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)代わりに使用してください。2 番目のパラメーターは、ファイルに追加するように 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 に答える