Can';使用groovy脚本按日期对文件进行排序

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

我有一个目录(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.createdDate}
    //不按日期排序
  • 返回Jar.sort{-it.createdDate}
    //不按日期排序
  • 返回Jar.sort{createdDate}
    //仅按日期排序1个文件(上次修改的Jar),其他文件按随机顺序排序
  • 返回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解析器中也有一些特殊情况,在这些情况下,它会为您提供一个类。感谢您的快速回答,但不幸的是,不起作用…:(您将问题放入数组名称(字符串)中。但是为了能够排序,您必须存储文件对象。使用完整的工作代码修改了答案。