gpt4 book ai didi

scala - 读取文件并在到达文件末尾时做某事的 Scalish 方式

转载 作者:行者123 更新时间:2023-12-01 13:06:04 26 4
gpt4 key购买 nike

我正在尝试找到一种更优雅、更简单的方式来逐行读取文件并调用函数当到达文件末尾时。这是我当前的实现:

val source = scala.io.Source.fromFile("data.txt")    
for(line <- source.getLines())
{
// do something with data
println(line)
}

// end of file reached do something else
doSomethingWithAllDataLoaded()

在这里,我需要的是更少的迭代并同时运行此文件读取并最终在到达文件末尾时调用回调函数。

最佳答案

您可以像这样以 Scala 风格阅读文件:

val source = scala.io.Source.fromFile("data.txt")
source.getLines.foreach(println(_))

要并行处理线路,请考虑 parallel collections .这看起来像这样:

source.getLines.toList.par.foreach(println(_))

但请记住,通过这种方式,您首先会从文件中读取所有行,然后开始并行处理它们。

希望对你有帮助

编辑:

如果您想避免在内存中加载文件 - 只需使用 Source.fromFile(...).getLines。它返回一个已经是惰性的 Iterator[String]。更重要的是,您不应该使用.toList 或类似的方法来避免内存问题。像这样的方法破坏了 Iterator 的所有惰性并强制执行严格(非惰性,渴望)集合。

关于scala - 读取文件并在到达文件末尾时做某事的 Scalish 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127212/

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