从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
}