如何附加到Scala中的文件?

时间:2011-07-29 07:53:26

标签: scala

我想写一个类似于以下的方法

def appendFile(fileName: String, line: String) = {
}

但我不确定如何充实实施。这里的另一个问题暗示了Scala 2.9功能,但我找不到更多细节。

4 个答案:

答案 0 :(得分:36)

目前没有特定于scala的IO实现,虽然我理解one written by Jesse Eichar正在孵化中。我不确定,它在多大程度上利用了JDK7中的新文件(路径)API。因此,现在我将使用简单的Java:

val fw = new FileWriter("test.txt", true)
try {
  fw.write( /* your stuff */)
}
finally fw.close() 

答案 1 :(得分:12)

问题是陈旧的,答案也是如此。我觉得这样容易:

npm update

scala.tools.nsc.io.File("filename").writeAll("hello world")

scala.tools.nsc.io.File("filename").appendAll("hello world")

当然为了更简洁,您可以导入scala.tools.nsc.io.Path("/path/to/file").createFile().appendAll("hello world") 包并避免在代码中重复它。使用此包的一个优点是您不必添加任何外部依赖项/库(例如,与scala.io.file(scala.tools.nsc.io)或Apache Commons不同)。

致谢:Garett Hall,见this

答案 2 :(得分:7)

val fw = new FileWriter("test.txt", true) ; 
fw.write("This line appended to file!") ; 
fw.close()

答案 3 :(得分:0)

os-lib是Scala文件系统操作(例如附加到文件)的最佳选择。

以下是将“听到我的声音”添加到文件的方法:

os.write.append(os.pwd/"whatever"/"file1.txt", "\nhear me moo")
os-lib对于文件系统操作是the best option,因为它为所有常用功能提供了统一的API,并且还为路径提供了干净的API。用于文件系统的Java API要求您将精力浪费在底层细节上,并迫使您导入大量代码。

下面是一个完整的示例,该示例创建目录,创建文件,然后在您要在本地计算机上进行实验时追加到文件:

os.makeDir(os.pwd/"whatever")
os.write(os.pwd/"whatever"/"file1.txt", "hi there")
os.write.append(os.pwd/"whatever"/"file1.txt", "\nhear me moo")