springboot 读取resource文件

2024-04-17 210点热度 0人点赞 0条评论

使用说明&建议

  • 需要使用的文件先创建好,内容可以为空。
  • 部署后,读取的是编译后打进jar包的文件。
  • 文件按照类别创建目录存放

pom.xml 配置

<!-- 定义包含这些资源文件,能在jar包中获取这些文件 -->
<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
            <include>**/*.yml</include>
        </includes>
        <!--是否替换资源中的属性-->
        <filtering>false</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.*</include>
            <!-- 决定能否在 jar 包中读取到形如 test_pub 的文件 -->
            <include>**/*_*</include>
        </includes>
        <!--是否替换资源中的属性-->
        <filtering>false</filtering>
    </resource>
</resources>

代码demo


import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.IOException;

public class ResourceFileUtils {

     /**
     * 1. 获取当前项目 resource 目录下已经存在的的文件(需要提前创建;读取编译后的 jar包中文件。)
     * 2. 需要配合设置项目文件的 pom.xml中的...
     * 3. ‘cannot be resolved to absolute file path because it does not reside in the file system: jar’ 需要注意
     * 文件打包斤 jar 之后,不能直接通过文件资源路径拿到文件,但是可以在jar包中拿到文件流
     *
     * @param resourceFilePath
     * @return
     * @throws IOException
     */
    public static Resource getConfigLocation(String resourceFilePath) throws IOException {
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] xmlLocations = resolver.getResources(resourceFilePath);
        return xmlLocations[0];
    }

    public static byte[] getFileBytes(String resourceFilePath) throws IOException {
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] xmlLocations = resolver.getResources(resourceFilePath);

        try (InputStream inputStream = xmlLocations[0].getInputStream()) {
            return inputStream.readAllBytes();
        }
    }
}

mylomen

本人从事 JAVA 开发10多年,将之前整理的笔记分享出来,希望能够帮助到努力的你。

文章评论