明白
首先,在你代码开发的过程中,SpringBoot获取相对路径
或者绝对路径
地址,基本上都是你的源代码的目录文件。
代码编译过后,达成jar或者war,在获取取相对路径
或者绝对路径
地址时,是你编译后的目录文件,也就是当前运行的jar文件中的文件或者时当前在tomcat中的war文件目录。
下面拿获取resource目录为示例演示。
几种文件路径
源代码中获取Resource文件地址
// 获取Resource文件下的template中的表格模板
String path = "classpath:template/双公示模板新.xlsx";
//使用ResourceUtils获取文件
File file = ResourceUtils.getFile(path);
//获取文件流
FileInputStream fileInputStream = new FileInputStream(file);
这种方式在本地测试是没有问题的,但是打成jar包之后不行。
打成jar包,获取Resource文件地址
ClassPathResource classPathResource = new ClassPathResource("classpath:template/双公示模板新.xlsx");
InputStream pathResourceInputStream = classPathResource.getInputStream();
获取项目中的根绝对路径
Test.getRootPath()
输出的就是:C:\Users\test\Desktop\TongYao
其他的有很多获取路径的方式,抽时间给大家分享,还是本篇文章,如果没有更新请评论留言催促一下。谢谢
有任何问题或建议可以评论留言,如果本篇文章解决了你的问题,请点个大大的赞吧!!!
找了几篇不错的相关参考:
https://blog.csdn.net/zhang_m_h/article/details/123637114
https://blog.csdn.net/weixin_43839145/article/details/123332490
https://blog.csdn.net/baidu_23275675/article/details/82622577
https://blog.csdn.net/baidu_39310713/article/details/119346070
https://blog.csdn.net/zjt11112/article/details/114882160
可以区分不同系统使用不同路径
String filePath = null;
String os = System.getProperty("os.name");
System.out.println(os);
if (os != null && os.toLowerCase().startsWith("windows")) {
filePath = System.getProperty("user.dir") + File.separator + "src"+ File.separator+"main"+ File.separator+"resources" + File.separator;
} else if (os != null && os.toLowerCase().startsWith("linux")) {
filePath = ReportController.class.getClassLoader().getResource("").getPath();
}
System.out.println(filePath);
Java技术讨论群
入群二维码:https://store.ityao.cn/api/image/friend/wxq.jpg
本群建立目的,主要交流、讨论Java(不一定Java),巩固基础知识、底层原理,为以后各位面试打基础。
欢迎各位提出相关面试题、算法、技术底层等问题。
顺便说一下,国内又一款开源软件Wall,搭建特别简单,可以搭建个人照片墙和视频墙,有兴趣可以看下教程:https://blog.csdn.net/u014641168/article/details/129396364