如何在groovy中向文件路径添加通配符?
我正在写一个spock测试,需要在文件路径中添加通配符。 脚本应该查看subjects文件夹和所有子文件夹,以找到advanced文件夹并查找exam.txt,但是,我一直收到一个错误消息FileNotFound 我相信代码是正确的,因为它可以很好地解析文件,但通配符位会引发异常如何在groovy中向文件路径添加通配符?,groovy,Groovy,我正在写一个spock测试,需要在文件路径中添加通配符。 脚本应该查看subjects文件夹和所有子文件夹,以找到advanced文件夹并查找exam.txt,但是,我一直收到一个错误消息FileNotFound 我相信代码是正确的,因为它可以很好地解析文件,但通配符位会引发异常 new File("School/Exams/Questions/Subjects/**/Advanced") if(it.name.matches("questions.txt"){ print it
new File("School/Exams/Questions/Subjects/**/Advanced")
if(it.name.matches("questions.txt"){
print it
}
java File类不支持通配符,这就是您看到FileNotFoundException的原因。File类正在尝试查找路径名中包含星号字符的文件 我想groovy可能是你的朋友。给定以下groovy代码:
new AntBuilder().fileScanner {
fileset(dir: '.', includes: '**/Advanced/questions.txt')
}.each { File f ->
println "Found file ${f.path}"
}
(注意在includes模式中使用了“在任何深度搜索”双星通配符)
以及以下目录结构:
$ 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
为便于阅读,路径被缩短 您可以使用获取文件名列表:
new FileNameFinder()
.getFileNames('School/Exams/Questions/Subjects/', '**/Advanced/questions.txt')
什么是
FileNameHandler
?它是从哪里来的?在这之后我如何解析所有questions.txt
文件?您可以像上面那样执行def fileNames=new FileNameFinder()…
,然后必须循环遍历文件名,为它们创建文件对象,然后执行类似file.text
的操作来获取内容。