列出Scala中任何文件夹中的jpg png文件

问题描述 投票:0回答:2

我想在任何文件夹中显示文件列表,以便能够对它们执行操作。

现在,我有这个。我应该改变什么?

  val folder: Array [File] = new File( "/Scala-App/Photos/all/" )
    .listFiles
    .filter(_.isDirectory)
  folder.foreach(println)
scala list directory
2个回答
1
投票
val folder: Array [File] = new File(dir)
.listFiles
.filter(_.isDirectory)

如果您要查找每个文件夹中的所有文件:

val nameOfFiles = for (file <- folder) yield file.listFiles()

如果您要在每个文件夹中查找特定的文件类型:

val nameOfFilesFiltered = for (file <- folder) yield file.listFiles().filter(_.getName.endsWith(".PNG"))

0
投票

如果您只需要一个提取任何目录的所有文件的函数,您需要一个递归函数来处理这些情况:

root
 -- file1.txt
 -- dir1
      -- file2.txt
      -- dir 2
           -- file3.txt

这是一个例子:

def filterArtifacts(dir: File): Seq[File] = {
    dir.listFiles()
      .flatMap {
        case f if f.isDirectory => filterArtifacts(f)
        case f if f.getName.startsWith(".") => Seq.empty // ignore hidden files.
        case f => Seq(f)
      }
  }

您可以像以下一样使用它:

filterArtifacts(new File( "/Scala-App/Photos/all/" ))
 .foreach(f => println(f.getName))
© www.soinside.com 2019 - 2024. All rights reserved.