- 在idea中读取resources下的文件没有问题(调用getFile),但是打成jar包就会出问题;
- 使用spring的ClassPathResource或者hutool的ClassPathResource去解析文件都会有问题;
- 但是使用上面两个工具去读取inputstream或者byte就没问题,因为内部都是调用ClassLoader的getResource方法,如果是文件,那么就是file://xxx,如果是jar包那么就会是jar:file://xxx;
- 因为如果是读取文件,那么路径就是file://xxx,但是在jar包中就不存在这东西,只会存在jar:file://xxx。读取inputstream或者byte最终会被解析成url方式读取(调用url的openStream方法),url方式读取就可以读取到file://xxx或者jar:file://xxx,读取文件就不行
- 所以遇到这种问题的时候不要试图去读取文件,而是要读取inputstream或者bytes
- 有3种方式可以实现:1. 手动去使用ClassLoader获取,2. 使用spring的ClassPathResource,3. 使用hutool的ClassPathResource
- 推荐:hutool的ClassPathResource,因为代码量少,并且不用捕获异常,hutool封装了ResourceUtil,使用getResourceObj或者readBytes方法都可以
- 注意:文件名前不需要加
classpath:
,也不用加/
这种绝对路径:
- 错误示范:
Resource resource = ResourceUtil.getResourceObj("classpath:/config/a.xlsx");
- 正确示范:
Resource resource = ResourceUtil.getResourceObj("config/a.xlsx");
posted @
2023-07-26 16:37
神一样的存在
阅读(
693)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2021-07-26 UML类图中的符号解释
2014-07-26 Java生产者消费者模型