classpath获取--getResource()

在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。

时间: 2024-10-03 22:39:08

classpath获取--getResource()的相关文章

java 相对路径获取 -- getResource的应用

(一)函数: (1)   Class.getResource(String path)                (2)   Class.getClassLoader.getResource(String path) 其中(2)中 path不能以'/'开头 (1)中path 开头有无'/' 均可,含义不同 (二)测试目录结构: |--project |--src |--mytest |--RePathTest.java |--file1.txt |--file2.txt |--bin |--

获取当前工程路径

1.利用System.getProperty()函数获取当前路径:System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径:File directory = new File("");//设定为当前文件夹try{    System.out.println(directory.getCanonicalPath());//获取标准的路径    Sy

java项目获取文件路径总结

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] java获取文件路径的方式比较多,总结可能有疏漏. 1.java.lang.System.getProperty(String key) System.getProperty("user.dir")这个方法的作用可以获取当前工程的根目录. ![我的一个项目](http://img.blog.csdn.net/20160322141415562) 比如获取上图中项目的根目录:C:\Users\Administrato

classpath: 和classpath*:的区别

classpath本质是jvm的根路径,jvm获取资源都是从该根路径下找的,注意这个根路径是个逻辑路径,并不是磁盘路径.比如两个jar包的路径是/a/a.jar和/b/b.jar,但是用classpath*:就可以找到这两个jar包中的资源. 一般classpath指向的是classes,也就是编译路径的根路径,而一般classes中放着这些文件: 1.java文件编译好的class文件. 2.properties配置文件. 3.xml配置文件. 4.一些模版文件,如*.ftl. 5.其他需要用

[Java拾遗三]JavaWeb基础之Servlet

Servlet    1,servlet介绍        servlet是一项动态web资源开发技术.        运行在服务器端.        作用:处理业务逻辑,生成动态的内容,返回给浏览器.        本质就是一个类     servlet的入门        1.编写servlet(类)--- 继承HttpServlet        2.编写关系--- web.xml(在WEB-INF下)        3.访问:            路径:http://localhost

上次遗留下来的XMLUtil的问题

·在上周留下了一个关于XMLUtil的问题,问题大概是这样的,需要通过读取一个XML文件,然后在内存中生成一个对应的javaBean.之前写的那个很是糟糕,照着一个XML去写了一个"Util",拓展性,可维护性几乎为0,所有的东西全都写死,完全就写了一个"不伦不类"的"Util",很是郁闷,点击查看之前的代码,所以痛定思痛,打算在本周对上次的Util进行重写,一直拖到今天才花了几个小时写好,不得不感叹我的拖延至之严重! ·下面贴出代码,先是两个实

从源码角度深入分析log4j配置文件使用

log4j在日常开发中经常使用,但有时候对 配置文件应该放到什么位置有疑惑.现在我们通过从代码的角度来看待这个问题, 看完后你也许会恍然大悟哦. 开始吧. Log4j的组成及架构: Log4j由三个重要的组成构成:日志记录器(Loggers),输出端(Appenders)和日志格式化器(Layout). 1.日志记录器(Loggers):控制要输出哪些日志记录语句,对日志信息进行级别限制.2.输出端(Appenders):指定了日志将打印到控制台还是文件中. 3.日志格式化器(Layout):控

java web中各种路径的问题

绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:xyz est.txt 代表了test.txt文件的绝对路径.http://www.sun.com/index.htm也代表了一个URL绝对路径. 相对路径:相对与某个基准目录的路径.包含Web的相对路径(HTML中的相对目录),例如:在 Servlet中,"/"代表Web应用的跟目录.和物理路径的相对表示.例如:"./" 代表当前目录,"../"代表

读取资源文件信息

读取资源文件信息 获取某个类的位置(编译后的.class文件的位置): new Junit().getClass().getResource("").getPath(); 获取classpath的位置(在tomcat中完美获取,在weblogic中无法正常获取,在JavaApplication中也能获取): this.getClass().getResource("\").getPath(); 获取classpath的位置(该方法在jdk7以后无效): Thread