解决Docker中读取springboot java包中resources下文件问题
1.使用ResourceUtils.getURL读取路径String path = ResourceUtils.getURL("classpath:").getPath();String filePath = path+"template"+File.separator+"role_template.xlsx";输出路径为:filePath=file:/data/app/label.jar!/BO
·
1.使用ResourceUtils.getURL读取路径
String path = ResourceUtils.getURL("classpath:").getPath();
String filePath = path+"template"+File.separator+"role_template.xlsx";
输出路径为:filePath=file:/data/app/label.jar!/BOOT-INF/classes!/template/role_template.xlsx
原来是本地运行时,是能到本地磁盘里找到该资源的。但是打成jar到线上该文件是存在于jar包文件资源里,而不是真实存在于磁盘路径上。
2. 通过getResourceAsStream()指定要加载的文件与当前类所在路径是一致的,从而获取到文件流
InputStream stream = getClass().getClassLoader().getResourceAsStream("template/role_template.xlsx");
//将读取到的内容存储到临时文件中,后面就可以用这个临时文件访问了
File file = new File("/data/app/template/role_template.xlsx");
//该方法会做判断,如果文件不存在自动创建template目录和role_template.xlsx文件
FileUtils.copyInputStreamToFile(stream,file);
更多推荐
已为社区贡献1条内容
所有评论(0)