Groovy(文件IO):查找所有文件并返回所有文件 – Groovy方式
发布时间:2020-12-14 16:34:09 所属栏目:大数据 来源:网络整理
导读:好的,这应该很容易…… 我是groovy的新手,我正在寻求实现以下逻辑: def testFiles = findAllTestFiles(); 到目前为止,我已经提出了下面的代码,它成功地打印了所有文件名.但是,我只需要将它们放入集合中,而不是打印.当然,我可以用旧的java方式做到这一点:只
好的,这应该很容易……
我是groovy的新手,我正在寻求实现以下逻辑: def testFiles = findAllTestFiles(); 到目前为止,我已经提出了下面的代码,它成功地打印了所有文件名.但是,我只需要将它们放入集合中,而不是打印.当然,我可以用旧的java方式做到这一点:只是实例化一个集合,添加所有元素并返回它.但是,那不会教我任何东西. 那么你如何以酷炫的“Groovy”方式做到这一点呢? static File[] findAllTestFiles() { def directory = new File("src/test/java"); def closure = {File f -> if(f.name =~ /Test.java$/) println f } directory.eachFileRecurse FileType.FILES,closure return null; } 我希望在Groovy中使用尽可能少的代码实现findAlltestFiles(),同时仍然可读. 解决方法
我试图避免完全建立集合.使用闭包,您可以分离逻辑以从您实际想要使用它们的文件中选择文件,如下所示:
import groovy.io.FileType def withEachTestFile(Closure closure) { new File("src/test/java").eachFileRecurse(FileType.FILES) { if (it.name =~ /Test.java$/) { closure.call(it) } } } 然后,如果您想对测试文件执行某些操作,则可以直接执行此操作而无需在内存中构建列表: withEachTestFile() { println it } 或者如果您真的想要列表,您可以使用任何有意义的集合轻松生成它: def files = [] withEachTestFile() { files << it } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |