gpt4 book ai didi

file - Groovy(文件IO): find all files and return all files - the Groovy way

转载 作者:行者123 更新时间:2023-12-04 04:50:48 34 4
gpt4 key购买 nike

好吧,这应该很容易...

我是groovy的新手,我希望实现以下逻辑:

def testFiles = findAllTestFiles();

到目前为止,我想出了下面的代码,该代码可以成功打印所有文件名。但是,除了打印之外,我只需要将它们放入集合中即可。当然,我可以使用旧的Java方法执行此操作:只需实例化一个集合,添加所有元素并返回它。但是,那不会教我任何东西。

那么,您如何通过酷炫的“时髦”方式来做到这一点?
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 }

关于file - Groovy(文件IO): find all files and return all files - the Groovy way,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4055339/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com