从Groovy';s eachFile()的顺序相反
我正在使用,但我正在尝试反转迭代发生的顺序。我该怎么做?现在,它似乎对文件列表进行排序,然后按排序顺序处理每个文件。我基本上想保留对列表的排序,并从末尾开始。您不能直接使用从Groovy';s eachFile()的顺序相反,groovy,Groovy,我正在使用,但我正在尝试反转迭代发生的顺序。我该怎么做?现在,它似乎对文件列表进行排序,然后按排序顺序处理每个文件。我基本上想保留对列表的排序,并从末尾开始。您不能直接使用每个文件,但使用列表文件和手动排序非常简单: new File(path_to_file).listFiles().sort{a,b -> b.name <=> a.name}.each{ File f -> println f.name } 在Groovy 2.1.3下测试。我知道的最简单的
每个文件
,但使用列表文件和手动排序非常简单:
new File(path_to_file).listFiles().sort{a,b -> b.name <=> a.name}.each{ File f ->
println f.name
}
在Groovy 2.1.3下测试。我知道的最简单的方法是
def allFiles = new File('desired directory').listFiles()?.sort{a, b ->
-(a.name <=> b.name)
}
我相信你不能改变eachFile()
的顺序,但是你可以达到想要的效果
考虑:
new File("desired dir").listFiles().sort{ it.name }.reverse().each { def f ->
println f.name
}
println f.class
将为所有文件打印java.io.File
。:)。建议编辑,println f.name
?注意:listFiles()
文件的顺序!如果要保证订单,则需要在相反的顺序之前插入.sort()
。(或者使用反向的闭包进行排序。)
def allFiles = new File('desired directory').listFiles()?.sort{a, b ->
a.lastModified() <=> b.lastModified()
//to reverse sort on lastModified date use below
//-(a.lastModified() <=> b.lastModified())
}
new File("desired dir").listFiles().sort{ it.name }.reverse().each { def f ->
println f.name
}