我想在任何文件夹中显示文件列表,以便能够对它们执行操作。
现在,我有这个。我应该改变什么?
val folder: Array [File] = new File( "/Scala-App/Photos/all/" )
.listFiles
.filter(_.isDirectory)
folder.foreach(println)
答案 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))