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

无聊的开发者

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

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)
        }
      }
    }

这是有效的,因为我正在使用“.pipeline”扩展名获取所有文件,但我希望该函数返回文件对象列表(List、Array 任何内容)而不是修改外部列表。我尝试在里面声明列表,但是递归调用每次都会重新初始化列表,也尝试将结果列表作为参数传递,但是当我尝试向它添加任何内容时,Scala 抛出错误,说它不能重新分配给 val。

还尝试了另一种方式:

def getListOfFiles(dir: File): Array[File] = {
    val filesList= dir.listFiles
    filesList ++ filesList.filter(_.isDirectory).flatMap(getListOfFiles)
    filesList.filter(_.getName.endsWith(".pipeline"))
}

这成功地获取了目录下的所有文件,但过滤器不起作用,因为即使谓词得到满足,它也没有返回任何内容。

任何帮助表示赞赏。

chengpohi
filesList ++ filesList.filter(_.isDirectory).flatMap(getListOfFiles)

正在返回一个新的不可变数组而不更改filesList. 所以你需要:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

如何列出目录中除具有指定扩展名的文件以外的所有文件?

列出包含带有特定扩展名的文件的所有目录

列出具有特定扩展名的目录和文件数量,构建特定菜单

列出设备上具有特定扩展名的所有文件

批量列出特定目录中的所有文件扩展名

列出具有特定扩展名的目录中的文件

如何仅在具有Powershell的txt文件的目录中列出具有特定扩展名的文件?

使用查找列出特定目录下的所有文件

“查找”未列出特定目录下的所有文件

如何在git存储库中列出具有特定扩展名的所有文件?

列出所有没有扩展名的文件

使用R列出具有指定扩展名的所有文件

列出用户指定的具有相同扩展名的所有文件

列出目录中包含的文件的所有唯一扩展名

列出目录中除扩展名外的所有文件

从目录中列出具有不同扩展名的文件

如何使用Java列出仅具有txt扩展名的目录的FTP文件?

列出具有扩展名匹配条件的文件

在cmd中如何列出包含具有特定扩展名的文件的文件夹?

一次调用即可列出Windows文件夹中具有某些扩展名的所有文件

如何使用github api列出目录下的所有文件名?

Bash:列出所有带有.addr_book的文件,不带文件扩展名

列出特定扩展名的文件

列出所有仅扩展名的文件和文件夹

如何在git存储库中列出跟踪文件的所有不同扩展名?

如何列出除扩展名[jpg,png,mkv等]以外的所有文件?[BASH通配符]

使用ls和grep列出具有某些扩展名的文件

bash:列出不具有给定扩展名的文件