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"

路径

OS-Lib 中的基本数据类型是 os.Path,表示文件系统上的路径。os.Path 始终是绝对路径。

OS-Lib 还提供了 os.RelPath(相对路径)和 os.SubPath(不能上升到父目录的相对路径)。

创建路径的典型起点是 os.pwd(当前工作目录)、os.home(当前用户的家目录)、os.root(文件系统的根目录)或 os.temp.dir()(一个新的临时目录)。

路径有一个 / 方法,用于添加路径段。例如

val etc: os.Path = os.root / "etc"

读取目录

os.list 返回目录的内容

val entries: Seq[os.Path] = os.list(os.root / "etc")

或者,如果我们只想要子目录

val dirs: Seq[os.Path] = os.list(os.root / "etc").filter(os.isDir)

要递归地遍历整个子树,请将 os.list 更改为 os.walk。要实时处理结果,而不是先将它们全部读入内存,请替换为 os.walk.stream

此页面的贡献者