使用说明&建议
- 需要使用的文件先创建好,内容可以为空。
- 部署后,读取的是编译后打进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();
}
}
}
文章评论