Scala中的PrintWriter没有写入文件?

vsi*_*al5 0 file-io scala

我有以下文件创建/编写代码:

val file =  new PrintWriter(new FileWriter(new File(TMP_DIR, fileName), true))
    file.write(getFirstRow(tableName))
Run Code Online (Sandbox Code Playgroud)

出于一些奇怪的原因,它不是写入我的文件,而是每次创建它.getFirstRow方法返回我想要附加到文件的字符串.出了什么问题?

mil*_*use 6

你既不是flushING也不close荷兰国际集团的File(或者PrintWriter,这也将这样做).

这是一个常见的错误,它是使用贷款模式示例的绝佳机会:

def withPrintWriter(dir:String, name:String)(f: (PrintWriter) => Any) {
  val file = new File(dir, name)
  val writer = new FileWriter(file)
  val printWriter = new PrintWriter(writer)
  try {
    f(printWriter)
  }
  finally {
    printWriter.close()
  }
Run Code Online (Sandbox Code Playgroud)

}

您使用的是这样的:

withPrintWriter("/tmp", "myFile") { printWriter =>
  printWriter.write("all good")
}
Run Code Online (Sandbox Code Playgroud)