SpringBoot获取项目文件的绝对路径和相对路径
@
1.场景
比如上传图片或者读取项目里的excel文件内容等,都需要准确获取文件路径
2.说明
项目代码大致样式
获取路径说明
所谓获取的相对路径,其实是获取项目打包后的target目录的路径,而不是咱们平常看到的代码路径,具体可查看下方图片
会议详情
重要信息
大会介绍
3.举例说明网上常见几种方法的路径获取结果
- request.getServletContext().getRealPath("")
- request.getServletContext().getRealPath("/")
- OperateExcelController.class.getResource("").getPath()
- OperateExcelController.class.getResource("/").getPath()
- OperateExcelController.class.getClassLoader().getResource("static/尼克.jpg").getPath()
- ResourceUtils.getURL("classpath:").getPath()
其中OperateExcelController为所在的类,ResourceUtils引入的是package org.springframework.util;
详情说明:
方法1、2的request.getServletContext().getRealPath("")和 request.getServletContext().getRealPath("/")
获得的路径不是项目路径,而是c盘下一个tomcat目录路径)
结果比如:C:\Users\211145187\AppData\Local\Temp\tomcat-docbase.8888.12632778012386910853\
方法3、4、5、6的OperateExcelController.class.getResource("").getPath()和OperateExcelController.class.getResource("/").getPath()和OperateExcelController.class.getClassLoader().getResource("").getPath()和ResourceUtils.getURL("classpath:").getPath()
实际获取的都是编译包里的根据经 比如:xx.class.getResource("").getPath()=xx.class.getResource("/").getPath()=xx.class.getClassLoader().getResource("").getPath()=ResourceUtils.getURL("classpath:").getPath()
结果比如:/E:/WorkSpace/demo/target/classes/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了