gpt4 book ai didi

scala - 在 Scala 中读取整个文件?

转载 作者:行者123 更新时间:2023-12-02 03:54:14 26 4
gpt4 key购买 nike

在 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()

最佳答案

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"

关于scala - 在 Scala 中读取整个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1284423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com