Scala 工具包

如何读取文件?

语言

你可以在一行中要求整个工具包

//> using toolkit latest

或者,你只需要求 OS-Lib 的特定版本

//> using dep com.lihaoyi::os-lib:0.9.1

在你的 build.sbt 中,你可以添加对工具包的依赖

lazy val example = project.in(file("example"))
  .settings(
    scalaVersion := "3.2.2",
    libraryDependencies += "org.scala-lang" %% "toolkit" % "0.1.7"
  )

或者,你只需要求 OS-Lib 的特定版本

libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.9.1"

在你的 build.sc 文件中,你可以添加对工具包的依赖

object example extends ScalaModule {
  def scalaVersion = "3.2.2"
  def ivyDeps =
    Agg(
      ivy"org.scala-lang::toolkit:0.1.7"
    )
}

或者,你只需要求 OS-Lib 的特定版本

ivy"com.lihaoyi::os-lib:0.9.1"

读取文件

假设我们有文件的路径

val path: os.Path = os.root / "usr" / "share" / "dict" / "words"

然后我们可以使用 os.read 将整个文件读入字符串

val content: String = os.read(path)

要逐行读取文件,请替换 os.read.lines

我们可以找到字典中最长的单词

val lines: Seq[String]  = os.read.lines(path)
println(lines.maxBy(_.size))
// prints: antidisestablishmentarianism

如果你想立即处理行,而不是一次将它们全部读入内存,还可以使用 os.read.lines.stream。例如,如果我们只想读取第一行,最有效的方法是

val lineStream: geny.Generator[String] = os.read.lines.stream(path)
val firstLine: String = lineStream.head
println(firstLine)
// prints: A

一旦 stream 返回的生成器耗尽,OS-Lib 将负责关闭文件。

此页面的贡献者