关于文件名校验的问题,请大神帮帮我

java有文件应该按xxx.xxx.xxx.001.log,xxx.xxx.xxx.002.log以此类推排序,我应该怎么校验他是否按此规则排序比如是否是001,002,004,003或者是否有遗漏比如001,002,004少了一个这样

File file = new File("目标文件夹路径");
File[] files = file.listfiles();
List<File> list = new ArrayList<File>();
for(File f : files){
    if(f.getName().matches("^xxx.xxx.xxx.\\d{3}.log$")){// 如果文件名符合要求
        list.add(f);
    }
}
Collections.sort(list, new Comparator<File>() {
            @Override
            public int compare(File o1, File o2) {
                            String s1 = o1.getName();
                            String s2 = o2.getName();
                            return Integer.parseInt(s1.split("[.]")[3])-Integer.parseInt(s2.split("[.]")[3]);

            }
        });
                // 这时候list已经排序好了,我们进行第二次排序,第二次排序是为了计算是否有漏网
                Collections.sort(list, new Comparator<File>() {
            @Override
            public int compare(File o1, File o2) {
                            String s1 = o1.getName();
                            String s2 = o2.getName();
                            int i = Integer.parseInt(s1.split("[.]")[3])-Integer.parseInt(s2.split("[.]")[3]);
                if(Math.abs(i)==0){
                                    System.out.println("文件排序重复[s1="+s1+"],[s2="+s2+"]");
                                }else if(Math.abs(i)==1){
                                    System.out.println("文件排序正常");
                                }else{
                                    System.out.println("漏掉了["+i+"]个文件,在文件["+s1+"]和文件["+s2+"]之间");
                                }
                                return 0;// 表示按照原来顺序,因为我们其实已经排序过了
            }
        });

这种用正则表达式是无法实现的,只能用正则保证格式正确,然后用代码校验数据的正确性

通过IO操作类获取当前文件夹下所有的log日志的文件名称。
再通过一个正则表达式用来检验获取的文件名是否符合要求(正则用静态的还是非静态的看需求,因为加载正则比较耗费性能)。
对于不满足格式的文件按照自己的业务进行处理,满足条件的用一个List集合保存起来(假设前面的xxx是不看重的信息,那么可以直接截取掉,留下002这样的便可以了,也可以直接转换为int类型数据)
直接通过Java的自带排序对List进行排序,便可以获得001,002,003的排序结构了,最后只要判断一下前一个数+1是否等于后一个数即可。