我好像写了一个递归闭包:)很难,但我并没有在如何从这个闭包中得到反馈。我写的闭包从文件系统的起始点递归删除文件。我现在想要删除多少个文件!
如何获得有关我删除了多少文件的反馈?我试过代表等但到目前为止没有运气..
def deleteClosure deleteClosure = { it.eachDir( deleteClosure ) it.eachFileMatch( ~".*123.jpg" ) { it.delete() } }
deleteClosure(new File("/tmp/delete.me"))
答案 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}"