Groovy使用递归目录搜索找到最新版本的文件

时间:2014-12-26 21:04:12

标签: java groovy

我是Groovy新手。我希望能够找到所提供文件的最新版本。我有一个起始文件夹,需要在所有下级文件夹中递归搜索该文件。相同的文件名可以在多个文件夹中,我的目标是获取最新版本。我认为关键是eachDirRecurse和eachFileMatch,但不太确定如何将它们全部放在一起以获得最新版本的文件。

1 个答案:

答案 0 :(得分:1)

假设您要比较具有相同名称的文件的上次修改日期:您使用eachFileRecurse来迭代所有文件。然后过滤相同的问题。接下来比较“当前”。 e.g:

// create some test files named `t` in `t[123]` dirs
['t3','t1','t2'].each{
    (it as File).with{
        new AntBuilder().delete(dir:it) // get rid of existing
        mkdir() // create new one
    }
    new File("$it/t").write "t" // write text file
    Thread.sleep(1000) // sleep to have different modification times
}

def hit // the found "current"
def last // the highest "current"
new File(".").eachFileRecurse{
    if (it.name=='t') { // check for your filename here
        def l = it.lastModified() // your comparsion for "current"; just java API in this case
        if (last<l) {
            last = l
            hit = it
        }
    }
}

assert hit==new File("./t2/t")