从文件行创建 Scala 数组的更好方法

Better way to create scala array from lines of a file

考虑一个文件的每一行都有字符串,我想创建一个数组,文件的每一行都作为数组的一个元素。我知道我可以这样做:

import scala.io.Source

val path: String = "path/to/text/file.txt"
var array: Array[String] = new Array[String](0)

for (line <- Source.fromFile(path).getLines) {
    array :+= line
}

但是它很长而且可能不是很理想。我在网上查看并没有找到更好的方法。您是否有更好的方法来使用我可能错过的数组内置方法或使用 map 或其他任何方法来创建此类数组?

谢谢。

使用 getLines returns 迭代,您可以从中使用 toArray

val path: String = "path/to/text/file.txt"
val array: Array[String] = Source.fromFile(path).getLines.toArray

在@TheFourthBird 的回答之上:

在您的代码中,您没有关闭文件。 这对于短程序来说可能没问题,但在一个长期存在的进程中,你应该明确地关闭它。

这可以通过以下方式完成:

import scala.io.Source
import scala.util.{Try, Using}

val path: String = "path/to/text/file.txt"
val tryLines: Try[Array[String]] = Using(Source.fromFile(path))(_.getLines.toArray)

What's the right way to use scala.io.Source?