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路径。


文章作者: wmg
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wmg !
  目录