返回Groovy中按修改时间排序的文件列表

Pro*_*ter 4 groovy jenkins jenkins-scriptler

我正在尝试返回目录列表以填充Jenkins(Scriptler)中的下拉菜单.这是我到目前为止:

import groovy.io.FileType

String snapshotBase="/(path-I-wish-to-look-at)/"
  def result=[];assert result.size()==0
  def releaseDir=new File(snapshotBase)
  if ( releaseDir.exists() ) {
  releaseDir.eachFile FileType.DIRECTORIES,{
    result.add(it.name)
    }
  }
return result
Run Code Online (Sandbox Code Playgroud)

这将返回目录列表,但为方便起见,我希望对它们进行排序,以便最近修改的目录显示在列表的顶部/开头.我是Groovy和Java的新手,但我在一些选项上采取了一些尝试.我想也许FileType.DIRECTORIES除了名字之外还有一些属性,但到目前为止我还没找到我想要的东西.(我猜的it.dateit.modified,但那些似乎是无效的),我发现的代码片段从看起来前途无量virtualeyes:

new File(path-to-your-directory).eachFileRecurse{file->
println file.lastModified()
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法将正确的语法拼凑在一起,以适应我正在做的事情.我想也许Java方法lastModified()可能会有一些解决方案,但我也无法找到成功.

cfr*_*ick 8

而不是添加名称,添加文件.然后按反向排序lastModified并收集名称(*.name就像.collect{it.name})

def files=[]
("/tmp" as File).eachFile groovy.io.FileType.DIRECTORIES, {
    files << it
}
def result = files.sort{ a,b -> b.lastModified() <=> a.lastModified() }*.name
Run Code Online (Sandbox Code Playgroud)