我有以下代码:
class ListPageXMLFiles implements FileFilter {
@Override
public boolean accept(File pathname) {
DebugLog.i("ListPageXMLFiles", "pathname is " + pathname);
String regex = ".*page_\\d{2}\\.xml";
if(pathname.getAbsolutePath().matches(regex)) {
return true;
}
return false;
}
}
public void loadPageTrees(String xml_dir_path) {
ListPageXMLFiles filter_xml_files = new ListPageXMLFiles();
File XMLDirectory = new File(xml_dir_path);
for(File _xml_file : XMLDirectory.listFiles(filter_xml_files)) {
loadPageTree(_xml_file);
}
}
Run Code Online (Sandbox Code Playgroud)
该FileFilter工作很好,但listFiles()似乎在上市相反的字母顺序的文件.是否有一些快速的方法listFile()来按字母顺序列出文件?
Ray*_*oal 208
listFiles无论有没有过滤器,该方法都不保证任何订单.
但是,它会返回一个数组,您可以对其进行排序Arrays.sort().
File[] files = XMLDirectory.listFiles(filter_xml_files);
Arrays.sort(files);
for(File _xml_file : files) {
...
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它File是一个类似的类,默认情况下按字典顺序对路径名进行排序.如果要对它们进行不同的排序,可以定义自己的比较器.
如果您更喜欢使用Streams:
更现代的方法如下.要按字母顺序打印给定目录中所有文件的名称,请执行以下操作:
Files.list(Paths.get(dirName)).sorted().forEach(System.out::println)
Run Code Online (Sandbox Code Playgroud)
用System.out::println你想要的文件名替换.如果你只想要以"xml"do 结尾的文件名:
Files.list(Paths.get(dirName))
.filter(s -> s.toString().endsWith(".xml"))
.sorted()
.forEach(System.out::println)
Run Code Online (Sandbox Code Playgroud)
再次,使用您想要的任何处理操作替换打印.
| 归档时间: |
|
| 查看次数: |
102426 次 |
| 最近记录: |