That is some awesomely concise code considering what it's doing and the code I've written in the past in pure java to do the same thing.
Yes - however, as Ed has pointed out, we can do better that that
Groovy adds lots of extra methods to standard Java classes which add useful functionality. So we have eachDir(), eachFile(), eachFileMatch() and eachFileRecurse(). These all take closures as their last parameter and call the closure with a File object parameter. The eachFileMatch method also takes a regexp to filter the file names.
This means that you can do stuff without all that tedious and error prone boilerplate code.
IDE's can often generate Java boilerplate code with a couple of keystrokes. However, you still have to read and maintain the verbiage. Conciseness of notation as a reading benefit not a writing benefit.