我目前正在编写spock测试,需要在文件路径中添加通配符。该脚本应查看subjects文件夹和所有子文件夹,以找到高级文件夹并查找exam.txt,但是,我一直收到错误消息FileNotFound。
我相信代码是正确的,因为它可以很好地解析文件,但是通配符位会引发异常。
new File("School/Exams/Questions/Subjects/**/Advanced")
if(it.name.matches("questions.txt"){
print it
}
Run Code Online (Sandbox Code Playgroud)
您可以使用FileNameFinder获取文件名列表:
new FileNameFinder()
.getFileNames('School/Exams/Questions/Subjects/', '**/Advanced/questions.txt')
Run Code Online (Sandbox Code Playgroud)
java File 类不支持通配符,这就是您看到 FileNotFoundException 的原因。File 类正在尝试查找路径名中包含星号字符的文件。
\n\n我认为出色的AntBuilder可能是您的朋友。给出以下常规代码:
\n\nnew AntBuilder().fileScanner {\n fileset(dir: \'.\', includes: \'**/Advanced/questions.txt\')\n}.each { File f -> \n println "Found file ${f.path}"\n}\nRun Code Online (Sandbox Code Playgroud)\n\n(请注意包含模式中使用“任意深度搜索”双星通配符)
\n\n以及以下目录结构:
\n\n$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 one\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ten\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Advanced\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 questions.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 three\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 thirty\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Advanced\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 two\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 twenty\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Advanced\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 questions.txt\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 twentyone\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Advanced\nRun Code Online (Sandbox Code Playgroud)\n\n该脚本产生:
\n\nFound file one/ten/Advanced/questions.txt\nFound file two/twenty/Advanced/questions.txt\nRun Code Online (Sandbox Code Playgroud)\n\n为了便于阅读,路径被缩写。
\n| 归档时间: |
|
| 查看次数: |
2728 次 |
| 最近记录: |