【发布时间】:2010-11-20 01:02:45
【问题描述】:
在 Scala 中将整个文件读入内存的简单而规范的方法是什么? (理想情况下,可以控制字符编码。)
我能想到的最好的是:
scala.io.Source.fromPath("file.txt").getLines.reduceLeft(_+_)
或者我应该使用Java's god-awful idioms 之一,其中最好的(不使用外部库)似乎是:
import java.util.Scanner
import java.io.File
new Scanner(new File("file.txt")).useDelimiter("\\Z").next()
通过阅读邮件列表讨论,我不清楚 scala.io.Source 是否应该是规范的 I/O 库。我不明白它的预期目的究竟是什么。
...我想要一些简单易记的东西。例如,在这些语言中,很难忘记成语...
Ruby open("file.txt").read
Ruby File.read("file.txt")
Python open("file.txt").read()
【问题讨论】:
-
如果您知道正确的工具,Java 并没有那么糟糕。导入 org.apache.commons.io.FileUtils; FileUtils.readFileToString(new File("file.txt", "UTF-8")
-
这条评论忽略了语言设计的重点。因此,任何具有用于您想要执行的操作的简单库函数的语言都与其函数调用语法一样好。给定一个无限且 100% 记忆的库,所有程序都将通过一个函数调用来实现。当一种编程语言需要较少的预制组件来实现特定结果时,它是很好的。
-
恐怕“给定一个无限且 100% 记忆的库”不是任何理性论证的前提!编程语言是为人类设计的,理想情况下应该只包含将事物粘合在一起所需的抽象
-
最好的现代解决方案是使用李的os-libas he mentioned here。 os-lib 隐藏了 Java 的丑陋,提供了Ruby-like elegance。
标签: scala