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