有没有一种很好,安全,快速的方法将输入流写入Scala中的文件?

2022-09-02 02:16:54

具体来说,我正在将文件上传到 Lift Web 应用程序中的本地文件。


答案 1

在 Java 7 或更高版本中,您可以从新的文件 I/O 中使用Files

Files.copy(from, to)

其中 和 可以是 s 或 s。这样,您甚至可以使用它来方便地从打包在 jar 中的应用程序中提取资源。fromtoPathInputStream


答案 2

如果它是一个文本文件,并且你想将自己限制在Scala和Java上,那么用于读取可能是最快的 - 它不是内置的,但很容易编写:scala.io.Source

def inputToFile(is: java.io.InputStream, f: java.io.File) {
  val in = scala.io.Source.fromInputStream(is)
  val out = new java.io.PrintWriter(f)
  try { in.getLines().foreach(out.println(_)) }
  finally { out.close }
}

但是,如果你无论如何都需要其他库,你可以通过使用它们来让你的生活更轻松(正如Michel所说明的那样)。

(P.S.--在 Scala 2.7 中,不应该有一个之后。getLines()

(P.P.S.--在旧版本的Scala中,没有删除换行符,所以你需要代替.getLinesprintprintln