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

返回Groovy中按修改时间排序的文件列表,groovy,jenkins,jenkins-scriptler,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() ) { releaseD

我试图返回一个目录列表来填充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
这将返回目录列表,但为了方便起见,我希望对它们进行排序,以便最新修改的目录显示在列表的顶部/开头。我不熟悉Groovy和Java,但我尝试了一些选项。我想除了名称之外,
FileType.DIRECTORIES
可能还有一些属性,但到目前为止我还没有找到我要查找的内容。(我猜是
it.date
it.modified
,但那些似乎是无效的。)我从virtualeyes找到了一段看起来很有希望的代码:

new File(path-to-your-directory).eachFileRecurse{file->
println file.lastModified()
}

不过,我还没能拼凑出正确的语法来适应我正在做的事情。我在想也许Java方法
lastModified()
可以解决一些问题,但我也没有找到成功的方法。

添加文件,而不是添加名称。然后按reverse lastModified排序并收集名称(
*.name
类似于
.collect{it.name}

def文件=[]
(“/tmp”作为文件)。每个文件groovy.io.FileType.DIRECTORIES{
文件b.lastModified()a.lastModified()}*.name

这正是我所需要的。非常感谢。至少在jenkins pipelines org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException上失败:脚本不允许使用staticField groovy.io.FileType文件
def files=[]
("/tmp" as File).eachFile groovy.io.FileType.DIRECTORIES, {
    files << it
}
def result = files.sort{ a,b -> b.lastModified() <=> a.lastModified() }*.name