📅  最后修改于: 2023-12-03 15:05:04.577000             🧑  作者: Mango
在 Scala 中,从文件中读取行可以使用 Java 中的 BufferedReader 类和 Java 中的 JavaStream API。
使用 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
)。
除了使用 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 方面获得优异的性能和可靠性。