📜  scala 从文件中读取行 - Scala (1)

📅  最后修改于: 2023-12-03 15:05:04.577000             🧑  作者: Mango

Scala 从文件中读取行

在 Scala 中,从文件中读取行可以使用 Java 中的 BufferedReader 类和 Java 中的 JavaStream API。

使用 BufferedReader

使用 Java 中的 BufferedReader 类可以从文件中读取行。这个类在 Java 中已经被实现,所以在 Scala 中可以直接使用它。

import java.io.{BufferedReader, FileReader}

val filename = "example.txt"
val br = new BufferedReader(new FileReader(filename))

var line = ""
while ({line = br.readLine; line != null}) {
  println(line)
}

br.close()

上面的代码首先创建了一个 BufferedReader 对象,并用 FileReader 对象初始化它。然后,它进入一个循环,读取每一行,直到遇到文件的结尾(readLine() 返回 null)。

使用 JavaStream API

除了使用 BufferedReader 外,Scala 还参考了 Java 中的 JavaStream API,为 Scala 中的文件 I/O 带来了诸多优化。以下是将文件读取为字符串的示例代码:

import java.nio.charset.Charset
import java.nio.file.{Files, Paths}

val filename = "example.txt"
val encoding = Charset.defaultCharset()

val lines = Files.readAllLines(Paths.get(filename), encoding)

for (line <- lines.asScala) {
  println(line)
}

上面的代码使用 java.nio.file.Files 对象中的 readAllLines 方法将文件的所有行读取到一个 List 对象中,然后使用 Scala 的 asScala 将其转化为一个 Scala 集合,最后遍历集合并打印每行。

结束语

以上就是在 Scala 中从文件中读取行的方法。通过使用 Java 中已经存在的 BufferedReader 类和 JavaStream API,Scala 可以在文件 I/O 方面获得优异的性能和可靠性。