一、说明
ClassLoader 提供了两个方法用于取得装载的类路径和取得其中的资源:
public URL getResource (String name); //得到的一个URL对象来定位资源
public InputStream getResourceAsStream (String name); //取得该资源输入流的引用
注意:这里name是资源相对于类的路径,即相对于"/"根路径下的位置
二、示例
1、获取当前class文件所在位置的绝对路径
代码:this.getClass().getResource("").getPath();
结果:/D:/Works/JavaTest/PathTest/bin/com/xilen/test
2、获取classpath的绝对路径
代码:this.getClass().getResource("/").getPath();
结果:/D:/JWorks/JavaTest/PathTest/bin/
3、通过线程的方式获取classpath的绝对路径
代码:Thread.currentThread().getContextClassLoader().getResource("").getPath();
结果:/D:/Works/JavaTest/PathTest/bin/
4、通过ClassLoader的静态方法获取classpath的绝对路径
代码:ClassLoader.getSystemResource("").getPath();
结果:/D:/Works/JavaTest/PathTest/bin/
5、补充:得到Web应用程序的根目录的绝对路径
代码:ServletActionContext.getServletContext().getRealPath(“/”);
结果:/D:/Server/apache-tomcat-7.0.42/webapps/WebTest
三、注意
1、getResource()和getResourceAsStream()是成对出现的
2、经过ClassLoader获取的默认已经是根路径,不能再传入"/"参数