如何从递归Groovy闭包中获取返回值?

时间:2011-09-24 17:50:58

标签: groovy closures

我好像写了一个递归闭包:)很难,但我并没有在如何从这个闭包中得到反馈。我写的闭包从文件系统的起始点递归删除文件。我现在想要删除多少个文件!

如何获得有关我删除了多少文件的反馈?我试过代表等但到目前为止没有运气..

    def deleteClosure
    deleteClosure = {
        it.eachDir( deleteClosure )
        it.eachFileMatch( ~".*123.jpg" ) {
            it.delete()
        }
    }
    deleteClosure(new File("/tmp/delete.me"))

1 个答案:

答案 0 :(得分:2)

无需编写自己的递归闭包代码,Groovy向File对象添加了 eachFileRecurse 方法。要获取已删除文件的数量,您可以随时增加一个计数器:

import groovy.io.*

def filesDeletedCount = 0
new File('/tmp/delete.me').eachFileRecurse(FileType.FILES) {
    if (it.name ==~ /.*123.jpg$/) {
        it.delete()
        filesDeletedCount++
    }
}

println "Files deleted: ${filesDeletedCount}"