返回 Groovy 中按修改时间排序的文件列表
Returning a list of files in Groovy sorted by modified time
我正在尝试 return 目录列表来填充 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
此 return 是目录列表,但为方便起见,我希望对它们进行排序,以便最近修改的目录出现在列表的 top/beginning 处。我是 Groovy 和 Java 的新手,但我尝试了一些选项。我想也许 FileType.DIRECTORIES
除了名称之外还有一些属性,但到目前为止我还没有找到我要找的东西。 (我猜到了 it.date
和 it.modified
,但这些似乎无效。)我从 virtualeyes 中找到了一段看起来很有希望的代码:
new File(path-to-your-directory).eachFileRecurse{file->
println file.lastModified()
}
不过,我没能拼凑出正确的语法来适应我正在做的事情。我在想也许 Java 方法 lastModified()
会有一些解决方案,但我也没有找到成功的方法。
不添加名称,而是添加文件。然后按反向 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
我正在尝试 return 目录列表来填充 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
此 return 是目录列表,但为方便起见,我希望对它们进行排序,以便最近修改的目录出现在列表的 top/beginning 处。我是 Groovy 和 Java 的新手,但我尝试了一些选项。我想也许 FileType.DIRECTORIES
除了名称之外还有一些属性,但到目前为止我还没有找到我要找的东西。 (我猜到了 it.date
和 it.modified
,但这些似乎无效。)我从 virtualeyes 中找到了一段看起来很有希望的代码:
new File(path-to-your-directory).eachFileRecurse{file->
println file.lastModified()
}
不过,我没能拼凑出正确的语法来适应我正在做的事情。我在想也许 Java 方法 lastModified()
会有一些解决方案,但我也没有找到成功的方法。
不添加名称,而是添加文件。然后按反向 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