groovy:在目录中获取最新的json文件

时间:2018-03-19 10:39:29

标签: sorting groovy filter

我想使用Groovy从/tmp目录获取最新的JSON文件。我可以获取最新文件或者我可以在.json扩展名上

进行过滤
def file = new File( '/tmp' ).listFiles()?.sort { -it.lastModified() }?.head()
def file = new File('/tmp').listFiles().find{it.isFile() && it=~/.json$/}.head()

我怎么能两个都做?

1 个答案:

答案 0 :(得分:3)

您可以通过在第一个示例中添加.findAll {}来完成此操作,例如:

def file = new File( '/tmp' )
        .listFiles()
        .findAll { it.file && it.name.endsWith('.json') }
        .sort { -it.lastModified() }
        .first()

findAll()find()的工作方式类似,但它会返回与给定谓词匹配的元素列表,而find()则返回与谓词匹配的第一个元素或任何元素。

您还可以考虑使用.getAt(0)代替.first().head()方法,如果列表为空,则会抛出异常。在这种情况下,.getAt(0)只会返回null

def file = new File('/tmp')
        .listFiles()
        .findAll { it.file && it.name.endsWith('.json') }
        .sort { -it.lastModified() }
        .getAt(0)