案例:jdk1.8函数式接口的定义和使用

给定一个目录,找到目录中满足条件的文件的所有绝对路径:

一、定义一个静态方法,支持自定义过滤文件的逻辑

Function接口支持范型,第一个是方法的入参类型,第二个是方法的出参类型:Function<File[],Map<String,String>>

   public static Map<String,String> getFilesFullPath(String dirPrefix, Function<File[],Map<String,String>> function){
​
        if(StringUtils.isEmpty(dirPrefix)){
            log.info("目录不存在:{}",dirPrefix);
            return null;
        }
​
        File dir = new File(dirPrefix);
​
        if(!dir.exists()){
            log.info("目录不存在:{}",dirPrefix);
            return null;
        }
​
        // 当前层的文件  不用目录
        File[] sub = dir.listFiles(File::isFile);
​
        if(sub == null || sub.length==0){
            log.info("目录下没有文件:{}",dirPrefix);
            return null;
        }
​
        return function.apply(sub);
    }

定义一个调用方,并自定义过滤逻辑

找到pathPrefix目录中,所有以fileSurfix结尾的文件

    private Map<String, String> getValidFullPath(String pathPrefix, String fileSurfix){
​
        Map<String, String> filesFullPath = FileIOUtils.getFilesFullPath(pathPrefix, files -> {
            Map<String, String> map = new HashMap<>();
            for (File file : files) {
                if (!file.getName().endsWith(fileSurfix)) {
                    continue;
                }
                // 去除文件名的后缀fileSurfix获得门店id
                String shopId = file.getName().replace(fileSurfix, "");
​
                if (shopId.length() != 4) {
                    continue;
                }
                // 保存每个门店id对应的文件的绝对路径
                map.put(shopId, file.getAbsolutePath());
            }
            return map;
        });
​
        return filesFullPath;
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值