如何在groovy中添加通配符到文件路径?

时间:2017-02-01 21:06:56

标签: groovy

我目前正在编写spock测试,需要在文件路径中添加通配符。 脚本应该查看subject文件夹和所有子文件夹以查找高级文件夹并查找exam.txt,但是,我一直收到错误说FileNotFound。

我相信代码是正确的,因为它可以解析文件,但通配符位会引发异常。

new File("School/Exams/Questions/Subjects/**/Advanced")
 if(it.name.matches("questions.txt"){
   print it
       }

2 个答案:

答案 0 :(得分:4)

您可以使用FileNameFinder获取文件名列表:

new FileNameFinder()
    .getFileNames('School/Exams/Questions/Subjects/', '**/Advanced/questions.txt')

答案 1 :(得分:2)

java File类不支持通配符,这就是您看到FileNotFoundException的原因。 File类正在尝试在路径名中查找带有星号字符的文件。

我认为groovy AntBuilder可能是你的朋友。鉴于以下groovy代码:

new AntBuilder().fileScanner {
  fileset(dir: '.', includes: '**/Advanced/questions.txt')
}.each { File f -> 
  println "Found file ${f.path}"
}

(注意在任何深度使用'搜索包含模式中的双星通配符)

和以下目录结构:

$ tree
.
├── one
│   └── ten
│       └── Advanced
│           └── questions.txt
├── three
│   └── thirty
│       └── Advanced
└── two
    ├── twenty
    │   └── Advanced
    │       └── questions.txt
    └── twentyone
        └── Advanced

脚本产生:

Found file one/ten/Advanced/questions.txt
Found file two/twenty/Advanced/questions.txt

路径缩写为可读性。