背景:程序执行时,会涉及到去读取配置文件等操作,那就需要了解怎么获得文件路径
Java目录映射关系
说明一点:在Java代码执行时,会将编译生成的classes文件,以及配置文件等信息生成到target目录下。最终执行的文件实际是target下的class文件
以上图的例子为例:
工程名:zzappqa
工程所在目录:/opt/script/zzappqa
生成的target目录:target
下面是一个工程文件到生成的target目录的一个映射关系
zzappqa工程下的文件target下的文件源码java文件classes下的class文件资源文件resourcesclasses下web站点的资源文件webappzzappqa(工程名)
zzappqa工程下的文件 | target下的文件 |
源码java文件 | classes下的class文件 |
资源文件resources | classes下 |
web站点的资源文件webapp | zzappqa(工程名) |
一般配置文件都是放在资源文件resources下的,综上关系,如果想获得配置文件。只要找到target下的classes目录即可。
获取classes目录地址的方法:
this.getClass().getResource("/").getPath()
获取工程目录的方法
说明:web站点,在本地和在tomcat启动时,System.getProperty("user.dir")是不一致的
方法 | 说明 |
System.getProperty("user.dir") |
1、如果是本地执行的,获取的是工程根目录
2、如果是在tomcat中启动的,获得的是tomcat的bin目录
|
Thread.currentThread().getContextClassLoader().getResource("").toString()) |
获得java编译文件存放的classes根目录
资源文件resources也在该目录下
|
this.class.getClassLoader().getResource("").getPath() |
同上
获得java编译文件存放的classes根目录
资源文件resources也在该目录下
|
this.class.getClass().getResource("/").getPath() |
同上
获得java编译文件存放的classes根目录
资源文件resources也在该目录下
|
this.class..getClass().getClassLoader().getResource(".").getPath() |
同上
获得java编译文件存放的classes根目录
资源文件resources也在该目录下
|
this.class.getClass().getResource("/comm").getPath() |
获得classes目录下的comm路径
注:如果该路径不存在会抛空指针异常
|
System.getProperty("java.class.path") | 获得java所有类加载路径 |