码迷,mamicode.com
首页 > 其他好文 > 详细

classpath获取--getResource()

时间:2016-07-31 00:05:37      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

在java中的API里,有两种方式来使用classpath读取资源。

1. Class的getResource()

2. ClassLoader的getResource()

但是两者有一定区别,运行以下程序:

package zero.xml.config;

public class Main {

    public static void main(String[] args) {
        new Main().testGetResource();
    }
    
    public void testGetResource() {
        
        System.out.println(Main.class.getResource("/").getPath());
        System.out.println(Main.class.getResource("/app.properties").getPath());
        System.out.println(Main.class.getResource("").getPath());
        System.out.println(Main.class.getResource("app.properties").getPath());
        System.out.println("-------------------");
        System.out.println(this.getClass().getResource("/").getPath());
        System.out.println(this.getClass().getResource("/app.properties").getPath());
        System.out.println(this.getClass().getResource("").getPath());
        System.out.println(this.getClass().getResource("app.properties").getPath());
        System.out.println("-------------------");
        System.out.println(Main.class.getClassLoader().getResource("").getPath());
        System.out.println(Main.class.getClassLoader().getResource("app.properties").getPath());
        System.out.println(Main.class.getClassLoader().getResource("zero/xml/config").getPath());
        System.out.println(Main.class.getClassLoader().getResource("zero/xml/config/app.properties").getPath());
    }
}

 

得到输出为:

/home/rain/git/spring-self-learn/bin/
/home/rain/git/spring-self-learn/bin/app.properties
/home/rain/git/spring-self-learn/bin/zero/xml/config/
/home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties
-------------------
/home/rain/git/spring-self-learn/bin/
/home/rain/git/spring-self-learn/bin/app.properties
/home/rain/git/spring-self-learn/bin/zero/xml/config/
/home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties
-------------------
/home/rain/git/spring-self-learn/bin/
/home/rain/git/spring-self-learn/bin/app.properties
/home/rain/git/spring-self-learn/bin/zero/xml/config
/home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties

 

也就是:

1. 如果想获得classpath,使用以下方法:

System.out.println(Main.class.getResource("/").getPath());

System.out.println(Main.class.getClassLoader().getResource("").getPath());

 

2. 如果想获得classpath下的文件,使用以下方法:

System.out.println(Main.class.getResource("/app.properties").getPath());

System.out.println(Main.class.getClassLoader().getResource("app.properties").getPath());

 

3. 如果想获得当前类(比如zero.xml.config.Main)的路径,使用以下方法:

System.out.println(Main.class.getResource("").getPath());

System.out.println(Main.class.getClassLoader().getResource("zero/xml/config").getPath());

 

4. 如果想获得当前类路径下的文件,使用以下方法:

System.out.println(Main.class.getResource("app.properties").getPath());

System.out.println(Main.class.getClassLoader().getResource("zero/xml/config/app.properties").getPath());

 

 

注意,如果获取的文件或路径不存在,getResource()会返回null。比如,getClassLoader().getResource("/")就会返回null。

classpath获取--getResource()

标签:

原文地址:http://www.cnblogs.com/drizzlewithwind/p/5721890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!