linux系统,springboot项目读取resources目录下的文件

mac2024-03-14  30

昨天上线一个小功能,读取resources目录下一个xlsx文件,识别其中数据并存库。 发现用别的方法都是macbook上能读取到文件,上到linux环境就读取不到了。最后用了下面这种方法能正常读取到文件,特此记录一下。

项目结构如下:

import org.springframework.core.io.ClassPathResource; /** * 读取excel。 filePath为resources目录下的相对路径,如:tmp/category.xlsx */ private static Workbook readExcel(String filePath) { if (filePath == null) { return null; } InputStream is = null; try { //获得文件流。 ClassPathResource自动定位到resources目录 ClassPathResource cpr = new ClassPathResource(filePath); is = cpr.getInputStream(); return new XSSFWorkbook(is); } catch (IOException e) { log.error("读取xlsx文件出现异常!!!!fail。 exception:{}", JsonUtils.toJson(e)); } finally { //关闭文件流 IOUtils.closeQuietly(is); } return null; }

用ClassPathResource这个类,能够在macos和Linux下定位到resources目录,最终根据相对路径获取到文件流,window没试。按照网上搜到的那些方法,在linux下是行不通的。 网上搜到的方法,在程序员的电脑上可行,一上到Linux环境就不行了:

方法一: File currentFolder = ResourceUtils.getFile("classpath:tmp"); 方法二: this.class.getResourceAsStream("/src/main/resources/tmp/category.xlsx");
最新回复(0)