博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot jar包运行中获取资源文件
阅读量:5156 次
发布时间:2019-06-13

本文共 1541 字,大约阅读时间需要 5 分钟。

1. 今天晚上写了一个程序,基于Spring boot的一个小网站,发现使用FileUtils.class.getResource(path)来获取jar包中的资源文件并不能成功,其路径很奇怪

file:/Users/lonecloud/Documents/ideaCode/git/export/target/export-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/temp/temp.xls

 查阅资料后,并且查看jar包中的资源文件发现有!还有classes!这样的文字,超级奇怪。后面找到一个折中的方法解决了该问题

public static File getJarResourceFile(String path, String fileName){        //获取容器资源解析器        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();        try {            //获取所有匹配的文件            Resource[] resources = resolver.getResources(path + fileName);            if (resources.length > 1) {                //获得文件流,因为在jar文件中,不能直接通过文件资源路径拿到文件,但是可以在jar包中拿到文件流                InputStream stream = resources[0].getInputStream();                if (logger.isInfoEnabled()) {                    logger.info("读取的文件流  [" + stream + "]");                }                String targetFilePath = System.getProperty("user.home") + File.separator + resources[0].getFilename();                if (logger.isInfoEnabled()) {                    logger.info("放置位置  [" + targetFilePath + "]");                }                File ttfFile = new File(targetFilePath);                org.apache.commons.io.FileUtils.copyInputStreamToFile(stream, ttfFile);                return ttfFile;            }        } catch (IOException e) {            if (logger.isWarnEnabled()) {                logger.warn("读取文件流失败,写入本地库失败! " + e);            }        }        throw new RuntimeException("未找到文件"); }

  

 

转载于:https://www.cnblogs.com/lonecloud/p/9114040.html

你可能感兴趣的文章
内部元素一一相应的集合的算法优化,从list到hashmap
查看>>
游戏中的心理学(一):认知失调有前提条件
查看>>
SpringMVC-处理AJAX
查看>>
WHAT I READ FOR DEEP-LEARNING
查看>>
【Ruby】Ruby在Windows上的安装
查看>>
Objective C 总结(十一):KVC
查看>>
BZOJ 3747 洛谷 3582 [POI2015]Kinoman
查看>>
vue实战(7):完整开发登录页面(一)
查看>>
[转载]mysql的left,right,substr,instr截取字符串,截取
查看>>
Visual Studio自定义模板(二)
查看>>
【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
查看>>
摘抄详细的VUE生命周期
查看>>
javascript高级程序设计---js事件思维导图
查看>>
sprint计划会议
查看>>
读《构建之法-软件工程》第四章有感
查看>>
使用 Printf via SWO/SWV 输出调试信息
查看>>
How to properly set clock speed for STM32F4xx devices
查看>>
.net 分布式架构之分布式锁实现(转)
查看>>
PHP 判断几秒前,几分钟,几小时前
查看>>
吴恩达机器学习笔记 —— 3 线性回归回顾
查看>>