为了账号安全,请及时绑定邮箱和手机立即绑定

在Scala中读取整个文件?

在Scala中读取整个文件?

湖上湖 2019-12-05 06:06:13
在Scala中将整个文件读入内存的简单而规范的方法是什么?(理想情况下,可以控制字符编码。)我能想到的最好的是:scala.io.Source.fromPath("file.txt").getLines.reduceLeft(_+_)还是我应该使用Java令人敬畏的惯用法之一,最好的用法是(不使用外部库):import java.util.Scannerimport java.io.Filenew Scanner(new File("file.txt")).useDelimiter("\\Z").next()通过阅读邮件列表讨论,我不清楚scala.io.Source甚至应该是规范的I / O库。我不明白它的预期目的是什么。...我想要一些简单易记的东西。例如,在这些语言中,很难忘记惯用语...Ruby    open("file.txt").readRuby    File.read("file.txt")Python  open("file.txt").read()
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

val lines = scala.io.Source.fromFile("file.txt").mkString

顺便说一下,“ scala.”并不是真正必要的,因为它始终处于作用域内,并且您当然可以全部或部分导入io的内容,而不必在前面加上“ io”。太。


上面的命令使文件保持打开状态。为了避免出现问题,您应该像这样关闭它:


val source = scala.io.Source.fromFile("file.txt")

val lines = try source.mkString finally source.close()

上面的代码的另一个问题是,由于其实现的本质,它的速度太慢了。对于较大的文件,应使用:


source.getLines mkString "\n"



查看完整回答
反对 回复 2019-12-07
?
互换的青春

TA贡献1797条经验 获得超6个赞

这在scala 2.9中可能也不起作用,也许在2.8中也不行)


使用中继线:


scala> io.File("/etc/passwd").slurp

res0: String = 

##

# User Database

... etc



查看完整回答
反对 回复 2019-12-07
  • 3 回答
  • 0 关注
  • 402 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信