You need to enable JavaScript to run this app. Android开发:如何在MP3文件扫描逻辑中添加排除指定前缀文件功能
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何在MP3文件扫描逻辑中添加排除指定前缀文件功能

实现方案

核心逻辑

只需要在原有MP3文件判断的分支中新增前缀匹配过滤即可,同时兼容用户输入空格、空排除规则的边缘场景:

  • 拆分排除前缀后对每个值做去空格处理,避免用户输入时逗号前后带空格导致匹配失效
  • 遍历所有排除前缀,只要文件名命中任意一个前缀就跳过加入列表
  • 空的排除前缀直接跳过,不会出现误匹配的情况

完整修改后代码

public ArrayList<File> fetchSongs(File file, String exclFiles){
        ArrayList<File> arrayList = new ArrayList<>();
        File [] songs = file.listFiles();
        
        // 处理排除前缀为空的场景,避免空指针异常
        String [] cParts = exclFiles != null ? exclFiles.split(",") : new String[0];

        if(songs !=null){
            for(File myFile: songs){
                if(!myFile.isHidden() && myFile.isDirectory()){
                    arrayList.addAll(fetchSongs(myFile, exclFiles));
                }
                else{
                    String fileName = myFile.getName();
                    if (fileName.endsWith(".mp3") && !fileName.startsWith(".")) {
                        boolean isExcluded = false;
                        // 遍历所有排除前缀判断是否匹配
                        for (String prefix : cParts) {
                            String trimedPrefix = prefix.trim();
                            // 跳过空前缀,避免误匹配
                            if (trimedPrefix.isEmpty()) {
                                continue;
                            }
                            if (fileName.startsWith(trimedPrefix)) {
                                isExcluded = true;
                                // 匹配到任意一个前缀就跳出循环,优化性能
                                break;
                            }
                        }
                        // 只有未命中排除规则的文件才加入展示列表
                        if (!isExcluded) {
                            arrayList.add(myFile);
                        }
                    }
                }
            }
        }
        return arrayList;
    }

改动说明

  1. 补全了原有代码中split语句遗漏的分号,修正了ArrayList未声明泛型的警告
  2. 新增了exclFiles空值判断,避免用户未输入排除规则时出现空指针异常
  3. 对每个排除前缀做去空格处理,兼容用户输入时的多余空格
  4. 新增isExcluded标记位,匹配到任意排除前缀就标记为需要过滤,不加入结果列表

内容的提问来源于stack exchange,提问作者SuhailHasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 12:15:05