对于在Scala中读取文件,有
Source.fromFile("file.txt").mkString
是否有一种等效和简洁的方法来将字符串写入文件?
大多数语言支持这样的东西 . 我最喜欢的是Groovy:
def f = new File("file.txt")
// Read
def s = f.text
// Write
f.text = "file contents"
我想将代码用于从单行到短代码的程序 . 必须使用自己的库在这里没有意义 . 我希望有一种现代语言能让我方便地写一些文件 .
有类似的帖子,但他们没有回答我的确切问题或专注于较旧的Scala版本 .
例如:
13 回答
如果你喜欢Groovy语法,你可以使用Pimp-My-Library设计模式将它带到Scala:
它将按预期工作:
我写的一个微型图书馆:https://github.com/pathikrit/better-files
要么
这简洁,我想:
更新:我已经创建了一个更有效的解决方案,我在这里详细说明:https://stackoverflow.com/a/34277491/501113
我发现自己在Scala IDE for Eclipse中的Scala工作表中工作越来越多(我相信在IntelliJ IDEA中有相同的东西) . 无论如何,我需要能够做一个单行输出一些内容,因为我得到“输出超过截止限制” . 如果我正在做任何重要的事情,特别是对于Scala集合,请留言 .
我想出了一个单行插入每个新Scala工作表的顶部以简化这一点(因此我不必为了一个非常简单的需要进行整个外部库导入练习) . 如果你是一个坚持者,并注意到它在技术上是两行,那只是为了让它在这个论坛中更具可读性 . 它是我的Scala工作表中的一行 .
用法很简单:
这允许我可选地提供文件名,如果我想要超出默认值的其他文件(每次调用方法时都会完全覆盖文件) .
所以,第二种用法很简单:
请享用!
简洁的一行:
奇怪的是没有人建议NIO.2操作(自Java 7以来可用):
我认为这是迄今为止最简单,最简单,最惯用的方式,并且它不需要任何依赖Java本身 .
通过分号的魔力,你可以制作任何你喜欢的单线 .
您可以轻松使用Apache File Utils . 看看函数
writeStringToFile
. 我们在项目中使用此库 .一个也有这种格式,它既简洁又底层库写得很漂亮(参见源代码):
您可以使用Java和Scala库的组合来完成此操作 . 您将完全控制字符编码 . 但不幸的是,文件句柄将无法正常关闭 .
这是一个使用Scala编译器库的简洁单行程序:
或者,如果您想使用Java库,您可以执行以下操作:
我知道这不是一条线,但就我所知,它解决了安全问题;
如果您不关心异常处理,那么您可以编写