springboot-项目获取resources下文件

时间:2024-03-12 17:15:17

背景:

  项目的resources 目录下放置了一份txt文件,需求是想获取到这份文件转成File对象,调用文件上传的接口进行文件上传操作。

  

 

实现:

  1、使用 ResourceUtils:本地ok,测试环境无效

File file = ResourceUtils.getFile("classpath:whitelist/微乐分新白名单2月推荐-前100.txt");

  注意:ResourceUtils.getFile() 方法可以获取到resources 下的文件,本地没问题 但是发布到 测试环境(linux系统下)没用。

  

  2、ClassPathResource,用于打成jar包后获取文件的方法:本地&测试环境都ok

ClassPathResource classPathResource = new ClassPathResource("whitelist/微乐分新白名单2月推荐-前100.txt");
InputStream inputStream = classPathResource.getInputStream();
File file = asFile(inputStream);//手动转换:InputStream To File

  

  备注:不可以直接通过classPathResource.getFile()得到File,会失败,暂时不清楚为什么,先解决问题,方式为由classPathResource获取到InputStream,然后再将InputStream转成File,转换的方式如下:

   /**
     * InputStream To File
     *
     * @param in InputStream
     *
     * @return File
     *
     * */
    public static File asFile(InputStream in) throws IOException {
        File tempFile = File.createTempFile("whitelist", ".tmp");
        tempFile.deleteOnExit();
        FileOutputStream out = new FileOutputStream(tempFile);
        IOUtils.copy(in, out);
        return tempFile;
    }

 

参考文章:

springboot-项目获取resources下文件的方法