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 檔案中,您可以新增對 Toolkit 的相依性

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

此頁面的貢獻者