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

Sorting groovy:获取目录中最新的json文件,sorting,groovy,filter,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() 如何同时做到这两个方面?您可以通过在第一个示例

我想使用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()

如何同时做到这两个方面?

您可以通过在第一个示例中添加
.findAll{}
来做到这一点,例如:

def file = new File( '/tmp' )
        .listFiles()
        .findAll { it.file && it.name.endsWith('.json') }
        .sort { -it.lastModified() }
        .first()
findAll()
的工作原理类似于
find()
,但是它返回与给定谓词匹配的元素列表,而
find()
返回与谓词匹配的第一个或任何元素

您也可以考虑使用<代码> .gATT(0)< /> >而不是<代码> .FieldSe(<代码)>或<代码> >(代码)> />代码>方法,如果列表为空,则抛出异常。code>.getAt(0)在本例中只返回
null

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

您可以通过在第一个示例中添加
.findAll{}
来实现这一点,例如:

def file = new File( '/tmp' )
        .listFiles()
        .findAll { it.file && it.name.endsWith('.json') }
        .sort { -it.lastModified() }
        .first()
findAll()
的工作原理类似于
find()
,但是它返回与给定谓词匹配的元素列表,而
find()
返回与谓词匹配的第一个或任何元素

您也可以考虑使用<代码> .gATT(0)< /> >而不是<代码> .FieldSe(<代码)>或<代码> >(代码)> />代码>方法,如果列表为空,则抛出异常。code>.getAt(0)在本例中只返回
null

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