首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Scala中写入文件?

如何在Scala中写入文件?
EN

Stack Overflow用户
提问于 2011-01-05 20:58:59
回答 12查看 156.4K关注 0票数 158

对于阅读,有一个有用的抽象Source。如何将行写入文本文件?

EN

回答 12

Stack Overflow用户

发布于 2011-01-06 02:56:25

这是标准Scala中缺少的特性之一,我发现它非常有用,所以我将其添加到了我的个人库中。(您可能也应该有一个个人库。)代码是这样的:

代码语言:javascript
复制
def printToFile(f: java.io.File)(op: java.io.PrintWriter => Unit) {
  val p = new java.io.PrintWriter(f)
  try { op(p) } finally { p.close() }
}

它的用法如下:

代码语言:javascript
复制
import java.io._
val data = Array("Five","strings","in","a","file!")
printToFile(new File("example.txt")) { p =>
  data.foreach(p.println)
}
票数 212
EN

Stack Overflow用户

发布于 2011-03-07 18:05:46

与Rex Kerr的答案类似,但更通用。首先,我使用一个helper函数:

代码语言:javascript
复制
/**
 * Used for reading/writing to database, files, etc.
 * Code From the book "Beginning Scala"
 * http://www.amazon.com/Beginning-Scala-David-Pollak/dp/1430219890
 */
def using[A <: {def close(): Unit}, B](param: A)(f: A => B): B =
try { f(param) } finally { param.close() }

然后,我将其用作:

代码语言:javascript
复制
def writeToFile(fileName:String, data:String) = 
  using (new FileWriter(fileName)) {
    fileWriter => fileWriter.write(data)
  }

代码语言:javascript
复制
def appendToFile(fileName:String, textData:String) =
  using (new FileWriter(fileName, true)){ 
    fileWriter => using (new PrintWriter(fileWriter)) {
      printWriter => printWriter.println(textData)
    }
  }

等。

票数 51
EN

Stack Overflow用户

发布于 2013-02-12 03:38:20

一个简单的答案:

代码语言:javascript
复制
import java.io.File
import java.io.PrintWriter

def writeToFile(p: String, s: String): Unit = {
    val pw = new PrintWriter(new File(p))
    try pw.write(s) finally pw.close()
  }
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4604237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档