背景:
项目的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下文件的方法