Java - 获取ClassPath的路径和资源

时间:2022-01-01 14:43:53

一、说明

    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获取的默认已经是根路径,不能再传入"/"参数