我使用eachFile(),但我试图颠倒迭代发生的顺序。我怎么做?现在,它似乎对文件列表进行排序,然后按照排序顺序处理每个文件。我基本上想保留 - 排序该列表并从最后开始。以相反顺序返回Groovy的eachFile()中的文件列表
2
A
回答
6
我相信你不能改变的eachFile()
顺序,但可以达到预期的效果。
考虑:
new File("desired dir").listFiles().sort{ it.name }.reverse().each { def f ->
println f.name
}
1
不能使用eachFile
直接,但它是非常简单的来执行此使用listFiles
和手动排序:
new File(path_to_file).listFiles().sort{a,b -> b.name <=> a.name}.each{ File f ->
println f.name
}
这里是被倒置sort{}
的关键。 (如果你只是使用上listFiles()
reverse()
,你不能保证从文件系统的任何特定的顺序 - 文件可能会在系统特定的顺序)
注意,排序是区分敏感 - 你可以做一个区分不敏感的排序是这样的:
new File(path_to_file).listFiles().sort{a,b -> b.name.compareToIgnoreCase(a.name)}.each{ File f ->
println f.name
}
的Groovy 2.1.3下进行测试。
1
我所知道的最简单的方法是
def allFiles = new File('desired directory').listFiles()?.sort{a, b ->
-(a.name <=> b.name)
}
eachFile
不能在封闭使用sort
。
明确使用sort
的好处是,您可以根据排序标准对文件进行排序。例如,文件排序基于文件的lastModified
日期: -
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())
}
相关问题
- 1. 为什么HttpURLConnection.getHeaderFields()以相反的顺序返回一个列表?
- 2. 以相反的顺序
- 3. 以相反的顺序
- 4. unpickle以相反的顺序
- 5. 以相反的顺序
- 6. TemplateBeginRepeat以相反的顺序
- 7. Plist以相反的顺序
- 8. inet_addr()返回长IP以相反的顺序
- 9. usort正在以相反的顺序返回数组
- 10. Properties.propertyNames()以相反的顺序返回Enumeration - 为什么?
- 11. 相反顺序的列表框(模板)
- 12. 方案列表中总是以相反的顺序
- 13. 按相反顺序排序列表
- 14. 以相反的顺序使用OrderedDict输出列表从CSV文件
- 15. Bot以相反顺序排列网格
- 16. 以相反顺序打印阵列
- 17. php数组以相反顺序排列
- 18. 以相反的顺序在CSV文件中打印行在PHP
- 19. 如何以相反顺序返回3个字符串?
- 20. 以相反顺序扫描Cloud Spanner表
- 21. 以相反顺序添加制表符?
- 22. jQuery:fadeOut列表项按相反顺序
- 23. 如何在Grails中以相反顺序迭代对象列表?
- 24. 按列表顺序从文件中返回行
- 25. 以相反的顺序按列排序二维列表的最快方法
- 26. Groovy的其他列表顺序
- 27. 以相反的顺序填充列的引用另一列
- 28. 以相反顺序显示行的文本组件
- 29. 以相反顺序复制文件的内容
- 30. IKImageBrowser以相反的顺序加载文件?
'的println f.class'将打印'java.io.File'所有文件。 :)。建议编辑,'println f.name'? – dmahapatro
注意。谢谢.... –
注意:'listFiles()'[不**不保证](http://docs.oracle.com/javase/6/docs/api/java/io/File.html#listFiles %28%29)文件的顺序!如果你想保证顺序,你需要在反向之前插入'.sort()'。 (或只是使用倒转的封闭进行排序。) – OverZealous