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

时间:2019-04-22 20:19:14

标签: scala list directory

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

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

  val folder: Array [File] = new File( "/Scala-App/Photos/all/" )
    .listFiles
    .filter(_.isDirectory)
  folder.foreach(println)

2 个答案:

答案 0 :(得分: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"))

答案 1 :(得分: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))