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/
|