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

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

项目结构如下:
linux系统,springboot项目读取resources目录下的文件_第1张图片

   
    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");

你可能感兴趣的:(java学习)