Spring中读取文件的问题
1.读取指定文件夹下所有文件
注:此处用流读取文件否则部署后会出现异常,最后有解释
// 读取文件下json文件
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath:json/*.json");
// 逐个读取文件
for (Resource resource : resources) {
// 注此处不能resource.getFile()
InputStream inputStream = resource.getInputStream();
// 保存读取的数据
StringBuilder sb = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String readLine;
while ((readLine = br.readLine()) != null) {
sb.append(readLine);
}
} catch (Exception e) {
log.error("文件读取异常:"+e.getLocalizedMessage());
continue;
}
2.资源扫描配置
<!--在xml的build中配置扫描-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<!--包含文件夹以及子文件夹下所有资源-->
<include>**/*.*</include>
</includes>
</resource>
</resources>
3.本地正常,部署后出现找不到文件的问题
原因
出现报错: file:/xxx.jar!/BOOT-INF/classes!/xxx.xxx (No such file or directory)
打包成jar以后,实际上文件是存在于jar这个文件里面的资源文件,在磁盘是没有真实路径的。
所以通过其他获取磁盘路径的方式是无法获取到该文件的。
解决
用流的方式读取文件即可:this.getClass().getResourceAsStream(“”)
这个路径对应jar的classes路径。