Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列出Scala目录下具有特定扩展名的所有文件_Scala_File_Recursion_Directory_Subdirectory - Fatal编程技术网

列出Scala目录下具有特定扩展名的所有文件

列出Scala目录下具有特定扩展名的所有文件,scala,file,recursion,directory,subdirectory,Scala,File,Recursion,Directory,Subdirectory,我试图从给定目录(及其子目录)中获取具有给定扩展名的所有文件的列表。 到目前为止,我所做的: var pipelineList: List[File] = Nil private def getPipelines(dir: File): Unit = { val tmp = dir.listFiles(); for (f <- tmp) { if (f.isDirectory()) getPipelines(f)

我试图从给定目录(及其子目录)中获取具有给定扩展名的所有文件的列表。 到目前为止,我所做的:

var pipelineList: List[File] = Nil

  private def getPipelines(dir: File): Unit =
    {
      val tmp = dir.listFiles();
      for (f <- tmp) {
        if (f.isDirectory())
          getPipelines(f)
        else if (f.isFile() && (f.getName.endsWith(".pipeline"))) {
          pipelineList = pipelineList ::: List(f)
        }
      }
    }
这将成功获取目录下的所有文件,但筛选器不工作,因为即使谓词得到满足,它也不会返回任何内容

感谢您的帮助

filesList ++ filesList.filter(_.isDirectory).flatMap(getListOfFiles)
正在返回新的不可变数组,而不更改
文件列表
。因此,您需要:

val res = filesList ++ filesList.filter(_.isDirectory).flatMap(getListOfFiles)
res.filter(_.getName.endsWith(".pipeline"))

令人惊叹的!谢谢,这很有效。我是Scala新手,请原谅我的无知,
filesList++filesList.filter(u.isDirectory).flatMap(getListOfFiles)
返回一个新的不可变数组,但filter函数返回一个新集合,其中的元素与谓词匹配。它不会尝试修改不可变数组。正确的?
val res = filesList ++ filesList.filter(_.isDirectory).flatMap(getListOfFiles)
res.filter(_.getName.endsWith(".pipeline"))