基于Spring实现搜索目录下指定名称文件

 更新时间:2025年08月03日 10:16:01   作者:爱码少年 00fly.online  
这篇文章主要为大家详细介绍了如何基于Spring实现搜索目录下指定名称文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

一、简单需求

需要在指定目录下搜索指定名称文件列表

一般思路是通过递归遍历文件,然后通过过滤的方法去实现,

spring的PathMatchingResourcePatternResolver 给了我们另外一种简单实现。

二、源码实现

import java.io.IOException;
import java.util.Arrays;
import java.util.stream.Stream;

import org.junit.jupiter.api.Test;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class FileListBySpring
{
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    
    String userProfile = "file:" + System.getenv().get("USERPROFILE");
    
    /**
     * 遍历文件
     * 
     * @throws IOException
     */
    @Test
    public void testList()
        throws IOException
    {
        // 外部文件
        Resource[] jpgs = resolver.getResources(userProfile + "/Pictures/**/*.jpg");
        Arrays.stream(jpgs).forEach(System.out::println);
        
        // 外部文件
        Resource[] pngs = resolver.getResources(userProfile + "/Pictures/**/*.png");
        Arrays.stream(pngs).forEach(System.out::println);
        
        // 工程或jar内文件
        Resource[] xmls = resolver.getResources("classpath*:**/*.xml");
        Arrays.stream(xmls).forEach(System.out::println);
        
        // 合并
        log.info("################################################## 合并后 ##################################################");
        Stream.of(jpgs, pngs, xmls).flatMap(Arrays::stream).forEach(System.out::println);
    }
    
    /**
     * 遍历文件,支持指定文件名搜索
     * 
     * @throws IOException
     */
    @Test
    public void testList2()
        throws IOException
    {
        Resource[] pngs = resolver.getResources(userProfile + "/Pictures/**/001.png");
        Arrays.stream(pngs).forEach(System.out::println);
        
        Resource[] pngs2 = resolver.getResources(userProfile + "/Pictures/**/00*.PNG");
        Arrays.stream(pngs2).forEach(System.out::println);
        
        Resource[] xmls = resolver.getResources("file:C:/Gitee/00fly/effict-side/**/pom.xml");
        Arrays.stream(xmls).forEach(System.out::println);
    }
}

三、运行结果

testList2

file [C:\Users\Administrator\Pictures\001.png]
file [C:\Users\Administrator\Pictures\eclipse\001.png]

file [C:\Users\Administrator\Pictures\00006.PNG]
file [C:\Users\Administrator\Pictures\00007.PNG]
file [C:\Users\Administrator\Pictures\00011.PNG]
file [C:\Users\Administrator\Pictures\0002.PNG]
file [C:\Users\Administrator\Pictures\0003.PNG]
file [C:\Users\Administrator\Pictures\0004.PNG]
file [C:\Users\Administrator\Pictures\0005.PNG]
file [C:\Users\Administrator\Pictures\0008.PNG]
file [C:\Users\Administrator\Pictures\0010.PNG]
file [C:\Users\Administrator\Pictures\009.PNG]
file [C:\Users\Administrator\Pictures\eclipse\000.PNG]
file [C:\Users\Administrator\Pictures\eclipse\006.PNG]

file [C:\Gitee\00fly\effict-side\apidoc-image\pom.xml]
file [C:\Gitee\00fly\effict-side\auto-to-swagger\jsp-to-swagger\pom.xml]
file [C:\Gitee\00fly\effict-side\class-junit-run\java-demo\pom.xml]
file [C:\Gitee\00fly\effict-side\class-junit-run\java-junit4\pom.xml]
file [C:\Gitee\00fly\effict-side\class-junit-run\run-test-boot\pom.xml]
file [C:\Gitee\00fly\effict-side\class-junit-run\run-test-simple\pom.xml]
file [C:\Gitee\00fly\effict-side\class-junit-run\tcp-boot\pom.xml]
file [C:\Gitee\00fly\effict-side\class-junit-run\tcp-java\pom.xml]
。。。。。。

到此这篇关于基于Spring实现搜索目录下指定名称文件的文章就介绍到这了,更多相关Spring文件搜索内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java多文件以ZIP压缩包导出的实现方法

    Java多文件以ZIP压缩包导出的实现方法

    这篇文章主要为大家详细介绍了Java多文件以ZIP压缩包导出的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 浅谈java中Map的用法

    浅谈java中Map的用法

    Map简介:将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。
    2015-09-09
  • 在springboot中对kafka进行读写的示例代码

    在springboot中对kafka进行读写的示例代码

    本篇文章主要介绍了在springboot中对kafka进行读写的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • JavaSE实战之酒店订房系统的实现

    JavaSE实战之酒店订房系统的实现

    这篇文章主要为大家详细介绍了如何利用JavaSE实现酒店订房系统,文中的示例代码讲解详细,对我们学习JavaSE开发有一定的帮助,需要的可以参考一下
    2022-07-07
  • IDEA2024创建Web项目以及配置Tomcat的实现步骤

    IDEA2024创建Web项目以及配置Tomcat的实现步骤

    在Web项目的开发过程中,Tomcat作为一款开源的Servlet容器,扮演着至关重要的角色,本文将详细阐述2024版本的idea配置Tomcat的全过程,下面就来详细的介绍一下
    2025-10-10
  • Java实现发送邮件并携带附件

    Java实现发送邮件并携带附件

    这篇文章主要为大家详细介绍了Java实现发送邮件并携带附件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • maven打包时候修改包名称带上git版本号和打包时间方式

    maven打包时候修改包名称带上git版本号和打包时间方式

    这篇文章主要介绍了maven打包时候修改包名称带上git版本号和打包时间方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 解决IDEA克隆代码后在右下角没有git分支的问题

    解决IDEA克隆代码后在右下角没有git分支的问题

    这篇文章主要介绍了解决IDEA克隆代码后在右下角没有git分支的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • spring中actuator监视器配置详解

    spring中actuator监视器配置详解

    这篇文章主要介绍了spring中actuator监视器配置详解,actuator主要是完成微服务的监控,完成监控治理,可以查看微服务间的数据处理和调用,当它们之间出现了异常,就可以快速定位到出现问题的地方,需要的朋友可以参考下
    2023-09-09
  • 详解SpringBoot中Controller接收对象列表实现

    详解SpringBoot中Controller接收对象列表实现

    这篇文章主要介绍了详解SpringBoot中Controller接收对象列表实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论