我想使用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()
我怎么能两个都做?
答案 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)