加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中查找与通配符String匹配的文件

发布时间:2020-12-16 18:41:29 所属栏目:安全 来源:网络整理
导读:如何获取与给定目录中的通配符匹配的所有文件的Array [io.BufferedSource]? 即,如何定义一个方法io.Source.fromDir这样 val txtFiles: Array[io.BufferedSource] = io.Source.fromDir("myDir/*.txt") // ??? 在Apache Commons IO中注意到FileUtils,但更优选
如何获取与给定目录中的通配符匹配的所有文件的Array [io.BufferedSource]?

即,如何定义一个方法io.Source.fromDir这样

val txtFiles: Array[io.BufferedSource] = io.Source.fromDir("myDir/*.txt") // ???

在Apache Commons IO中注意到FileUtils,但更优选的是基于Scala API的方法,没有外部依赖性.

解决方法

scala> import reflect.io._,Path._
import reflect.io._
import Path._

scala> val r = """.*.scala""".r
r: scala.util.matching.Regex = .*.scala

scala> "/home/amarki/tmp".toDirectory.files map (_.name) flatMap { case n @ r() => Some(n) case _ => None }
res0: Iterator[String] = non-empty iterator

scala> .toList
res1: List[String] = List(bobsrandom.scala,...)

或递归

scala> import PartialFunction.{ cond => when }
import PartialFunction.{cond=>when}

scala> "/home/amarki/tmp" walkFilter (p => p.isDirectory || when(p.name) {
     | case r() => true })
res3: Iterator[scala.reflect.io.Path] = non-empty iterator

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读