val lines = scala.io.Source.fromFile("file.txt").mkString
By the way, "scala." isn't really necessary, as it's always in scope anyway, and you can, of course, import io's contents, fully or partially, and avoid having to prepend "io." too.
The above leaves the file open, however. To avoid problems, you should close it like this:
val source = scala.io.Source.fromFile("file.txt")
val lines = try source.mkString finally source.close()
Another problem with the code above is that it is horrible slow due to its implementation nature. For larger files one should use:
source.getLines mkString "\n"
I had the same problem as Sharath Prabhal, and I got another (to me clearer) solution :
val s = Seq("apple", "oranges", "apple", "banana", "apple", "oranges", "oranges")
s.groupBy(l => l).map(t => (t._1, t._2.length))
With as result :
Map(banana -> 1, oranges -> 3, apple -> 3)
shareedit
博客讨论了Scala中从文件读取内容的多种方法,包括使用`Source.fromFile`和考虑性能问题。作者指出,对于大文件,应避免使用`mkString`的慢速实现,而应该使用`getLines`结合`mkString`来提高效率。此外,还展示了一个示例,展示了如何对数据进行分组计数,以得到每个元素出现的次数。

364

被折叠的 条评论
为什么被折叠?



