web项目的相对路径和绝对路径
来源:互联网 发布:mdzz什么意思网络用语 编辑:程序博客网 时间:2024/04/30 05:17
这个博客源于我遇到的bug
bug描述:大家都知道相对路径和绝对路径的含义,但是大家有没有想到web工程和非web工程的相对路径和绝对路径呢?
这就是我要在这篇博客中主要说明的。
需求:在web项目中获取到指定文件夹中的文件名称
在idea上的目录:src/main/resources/base/esXml/的目录下有 很多xml文件,要获取该目录条件下 所有xml文件的文件名称
1. 非web项目(包括web项目上的junit测试):下面是获取指定目录下文件名的代码
public static List<String> getFile(String path) { File file = new File(path); File[] array = file.listFiles(); List<String> list = new ArrayList<>(); for (int i = 0; i < array.length; i++) { if (array[i].isFile()) { list.add(array[i].getName()); } } return list;}
path:src/main/resources/base/esXml/
结果:
1.xml
2.xml
......
而上面的path就是相对路径(相对于当前项目为根目录,前面没有“/”)
当然我们也可以使用绝对路径path:users/IdeaProject/项目名称/src/main/resources/base/esXml/
2. 如果是web项目的,大家就要小心了,无论是相对路径还是绝对路径
原因:当我们用Tomcat启动项目的时候,是将工程重新编译的放到Tomcat中执行的,随之的目录结构也会发生变化
没有用Tomcat启动项目的目录:users/IdeaProject/项目名称/src/main/resources/base/esXml/
使用Tomcat启动项目的目录:/Users/zhangruibiao/install/apache-tomcat-8.5.9/webapps/ROOT/WEB-INF/classes
是放到tomcat目录下执行的,所有原来的相对路径和绝对路径都会是错的了
上图是工程重新编译并在tomcat下执行的目录结构,而要获取esXml文件夹下的xml文件的目录:
/Users/zhangruibiao/install/apache-tomcat-8.5.9/webapps/ROOT/WEB-INF/classes/esXml/
相比于非web项目的目录:users/IdeaProject/项目名称/src/main/resources/base/esXml/
有很大不同,这时在项目上我们要获取的目录应该是第一个,下面是获取该路径的代码
public String getPath(){ String pathWebroot = this.getClass().getResource("/").toString(); pathWebroot = pathWebroot + "esXml/"; LOG.info(pathWebroot); String path = pathWebroot.substring(5); LOG.info(path); return path;}
代码解释:大家应该很好奇为什么会有红色的代码,那是做什么的呢?
看了该代码的两个LOG日志打印,相信就会明白了
file:/Users/zhangruibiao/install/apache-tomcat-8.5.9/webapps/ROOT/WEB-INF/classes/esXml/
- web项目的相对路径和绝对路径
- web项目的中绝对路径和相对路径
- WEB项目的相对路径与绝对路径
- web工程的相对路径和绝对路径
- web应用的绝对路径和相对路径
- web的绝对路径和相对路径
- Java EE Web项目中的相对路径和绝对路径
- Java EE Web项目中的相对路径和绝对路径
- web项目中的绝对路径与相对路径
- web项目中相对路径与绝对路径
- 访问web资源的相对路径和绝对路径
- java web中相对路径和绝对路径的获取
- 项目中 关于相对路径和绝对路径的问题
- web工程中的相对路径和绝对路径
- java(web)中的相对路径和绝对路径
- web中的相对路径和绝对路径
- java web 中的绝对路径和相对路径
- Web中的URL:绝对路径和相对路径
- MVC的处理过程及优点
- Android PathMeasure工具类笔记(仿UC loaddingview)
- Windows Container 和 Docker:你需要知道的5件事
- Yii2.0中基于AccessControl的权限相关验证统一管理
- JS的Date对象
- web项目的相对路径和绝对路径
- ceph手动安装
- 算法提高 队列操作
- 不能被三整除的数
- GIT的使用方法详解~
- 网络编程
- 十七、java-GUI之边界布局(BorderLayout)
- 安卓开发之获取本地图片并设置为应用背景图片
- Reverse Integer