Can';使用groovy脚本按日期对文件进行排序
我有一个目录(jars),其中包含许多具有不同创建日期的.jar文件Can';使用groovy脚本按日期对文件进行排序,groovy,Groovy,我有一个目录(jars),其中包含许多具有不同创建日期的.jar文件 Jar=[] Date createdDate = new Date() path = "/home/users/DIT/jars/" new File(path).eachFileMatch(~/.*.jar/) { Jar.add(it.getName()) } return Jar.sort{it.createdDate} 我试过这些,但没有一个有效: 返回Jar.sort{it.createdDa
Jar=[]
Date createdDate = new Date()
path = "/home/users/DIT/jars/"
new File(path).eachFileMatch(~/.*.jar/) {
Jar.add(it.getName())
}
return Jar.sort{it.createdDate}
我试过这些,但没有一个有效:
//不按日期排序返回Jar.sort{it.createdDate}
//不按日期排序返回Jar.sort{-it.createdDate}
//仅按日期排序1个文件(上次修改的Jar),其他文件按随机顺序排序返回Jar.sort{createdDate}
//不按日期排序返回Jar.sort{a,b->b.lastModified()a.lastModified()}
//不按日期排序返回Jar.sort{a,b->b.createdDatea.createdDate}
- 文件对象上没有属性
createdDate
然而,有一种方法
因此,这应该是可行的:
Jar=[]
path = "/11/server/wso2ei-6.3.0/lib/"
new File(path).eachFileMatch(~/.*.jar/) {
Jar.add(it)
}
return Jar.sort{it.lastModified()}
如果只想返回名称:
return Jar.sort{it.lastModified()}.collect{it.name}
我还没有尝试过,但我的第一个想法是,这些日期值是字符串,因此可能按字母顺序排序,而不是按日期排序。也许您需要编写一个函数来转换每个日期字符串(如果这是问题所在,则转换为日期,然后进行排序)。随机挑剔:以大写字母(
Jar
)命名变量这是违反惯例的,Groovy解析器中也有一些特殊情况,在这些情况下,它会为您提供一个类。感谢您的快速回答,但不幸的是,不起作用…:(您将问题放入数组名称(字符串)中。但是为了能够排序,您必须存储文件对象。使用完整的工作代码修改了答案。