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

标签 java groovy

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

最佳答案

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

// 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")

关于java - Groovy 使用递归目录搜索查找文件的最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661963/

相关文章:

groovy - 如何在 Jenkinsfile 中定义和调用函数?

java - 在失控的 GroovyShell 服务器线程上调用 Thread.stop 是否风险太大?

java - 我的 try 语句之后的所有内容都必须包含在该 try 语句中才能访问其中的变量吗?

java - Apache DefaultHttpClient 类的问题

java - Java 中是否有零时间、启动(无需重新编译)可切换条件标志?

java.lang.NullPointerException : Cannot invoke method get() on null object

有条件地 append 到字符串的 Groovy 方法

shell - Groovy 脚本可执行文件

java - Java 中颠倒 PriorityQueue 顺序的最快方法

java - 如何运行具有相关任务的并发作业?