You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合字符串数组元素,利用endsWith筛选目录中的目标文件?

实现文件名与扩展名的全组合匹配筛选

这问题很常见,核心思路就是先预先生成fileName和fileType的所有两两组合后缀,再遍历文件时检查文件名是否匹配其中任意一个后缀即可。下面给你两种实用的Java实现方式:

方式1:嵌套循环生成组合(直观易懂)

先通过两层嵌套循环把所有可能的后缀组合存入列表,之后用这个列表做批量判断:

import java.util.ArrayList;
import java.util.List;

// 定义你的字符串数组
String[] fileName = {"_clause", "_regulator"};
String[] fileType = {".txt", ".doc"};

// 生成所有目标后缀组合
List<String> targetSuffixes = new ArrayList<>();
for (String namePart : fileName) {
    for (String typePart : fileType) {
        targetSuffixes.add(namePart + typePart);
    }
}

// 遍历文件时的判断逻辑
if (textFiles.isFile()) {
    String currentFileName = textFiles.getName();
    // 检查文件名是否匹配任意一个目标后缀
    boolean matches = targetSuffixes.stream()
                                    .anyMatch(suffix -> currentFileName.endsWith(suffix));
    if (matches) {
        // 这里处理符合条件的文件
        System.out.println("匹配成功:" + currentFileName);
    }
}

方式2:Stream流式生成组合(简洁优雅)

如果习惯用Java 8+的Stream API,可以用flatMap来更简洁地生成所有组合:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

// 定义你的字符串数组
String[] fileName = {"_clause", "_regulator"};
String[] fileType = {".txt", ".doc"};

// 用Stream生成所有后缀组合
List<String> targetSuffixes = Arrays.stream(fileName)
                                   .flatMap(name -> Arrays.stream(fileType)
                                                          .map(type -> name + type))
                                   .collect(Collectors.toList());

// 后续的文件判断逻辑和方式1完全一致

额外小提示

如果你的场景需要忽略文件名大小写(比如同时匹配.DOC和.doc),可以把文件名和后缀都转成小写再判断:

boolean matches = targetSuffixes.stream()
                                .anyMatch(suffix -> currentFileName.toLowerCase().endsWith(suffix.toLowerCase()));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:05:57