4

我正在尝试返回目录列表以填充 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.dateand it.modified,但那些似乎是无效的。)我从 virtualeyes 中找到了一段看起来很有希望的代码:

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

但是,我无法拼凑出正确的语法来适应我正在做的事情。我在想也许 Java 方法lastModified()会提供一些解决方案,但我也无法找到成功。

4

1 回答 1

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
于 2015-03-19T18:02:33.993 回答