Class和ClassLoader.getResource获取资源
2014-05-15 20:24
288 查看
资源就是系统内、项目内的各种文件。在Java中获取可以用File类和Class.getResource获取资源,直观的说,File是依赖于文件系统和操作系统的,通过相对和绝对路径定位,使用File接口可以用于获取系统内任何路径下的普通文件。Class和ClassLoader可以用于获取项目环境中的资源,‘环境中’的具体定义就是classpath。classpath相当于getResource参数的跟目录,ClassLoader.getResource是只能从这个根目录开始定位资源,Class.getResource的参数字符串如果以‘/’开始,就表示从classpath开始。
classpath包括写什么
classpath并非一个目录,其是由很多目录组成,具体包含哪些目录可以在项目的根目录中的.classpath文件中看到,如下例子,Test项目下的.classpath
也就是说,项目下的src,bin目录都包含在classpath中,当使用ClassLoader.getResource和Class.getResource("/****")时会依次从classpathentry下查询,找到第一个匹配的资源。对于普通的java工程Class.getResource("/")返回的为bin目录,Web工程Class.getResource("/")将返回WEB-INF/classes目录。ClassLoader.getResource是不认识以“/”开始的字符串的,也就是ClassLoader.getResource("/")将返回null,如果要获取根目录,可以通过ClassLoader.getResource("")。
Class.getResource有两种方式,第一种是通过以"/"开始的绝对路径,"/"表示上面的classpath,等价于ClassLoader.getResource("**/**"),第二种方式通过Class.getResource("***/***"),这是相对于Class实例对象的.class文件所在的目录位置,而非调用getResource类的.class文件所在位置的路径。也就是说,如果在Test.java里面调用Test2.class.getResource("***/***"),则"***/***"是相对Test2.class文件所在目录的路径。
由于需要使用到的.jar都在classpath下面,因此,getResource也可以得到.jar包中的资源。如Test.class.getResource("/java/lang/Object.class"),Test.class.getClassLoader.getResource("java/lang/Object.class");
本文出自 “深思JavaEE” 博客,请务必保留此出处http://xjava.blog.51cto.com/2949562/1412044
classpath包括写什么
classpath并非一个目录,其是由很多目录组成,具体包含哪些目录可以在项目的根目录中的.classpath文件中看到,如下例子,Test项目下的.classpath
也就是说,项目下的src,bin目录都包含在classpath中,当使用ClassLoader.getResource和Class.getResource("/****")时会依次从classpathentry下查询,找到第一个匹配的资源。对于普通的java工程Class.getResource("/")返回的为bin目录,Web工程Class.getResource("/")将返回WEB-INF/classes目录。ClassLoader.getResource是不认识以“/”开始的字符串的,也就是ClassLoader.getResource("/")将返回null,如果要获取根目录,可以通过ClassLoader.getResource("")。
Class.getResource有两种方式,第一种是通过以"/"开始的绝对路径,"/"表示上面的classpath,等价于ClassLoader.getResource("**/**"),第二种方式通过Class.getResource("***/***"),这是相对于Class实例对象的.class文件所在的目录位置,而非调用getResource类的.class文件所在位置的路径。也就是说,如果在Test.java里面调用Test2.class.getResource("***/***"),则"***/***"是相对Test2.class文件所在目录的路径。
由于需要使用到的.jar都在classpath下面,因此,getResource也可以得到.jar包中的资源。如Test.class.getResource("/java/lang/Object.class"),Test.class.getClassLoader.getResource("java/lang/Object.class");
本文出自 “深思JavaEE” 博客,请务必保留此出处http://xjava.blog.51cto.com/2949562/1412044
相关文章推荐
- Java中资源(resource)获取 Class.getResource() & ClassLoader.getResource()
- class getResourceAsStream 和 classloader getResourceAsStream获取资源的不同
- Class.getResourceAsStream()与ClassLoader.getResourceAsStream()获取资源时的路径说明
- Class.getResource和ClassLoader.getResource 获取资源文件路径
- Java中获取classpath路径下的资源文件【ClassLoader.getSystemResource("")获取当前ClassPath的绝对URI路径,还可以以流的形式获取文件】
- Java class.getClassLoader().getResource("")获取资源路径
- Java class.getClassLoader().getResource("")获取资源路径
- Java class.getClassLoader().getResource("")获取资源路径
- Java 使用getClass().getResourceAsStream()方法获取资源
- Java中取资源时,Class.getResource和ClassLoader.getResource
- ClassLoader.getResourceAsStream(name);获取配置文件的 f2ac 方法
- getClassLoader().getResourceAsStream()去哪里找资源文件
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- 静态代码块 通过getClassLoader() 较高性能 获取资源属性文件
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释 (转)
- 获取资源文件地址getClassLoader
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解
- 使用Class.getResource(),ClassLoader.getResource(),ResourceBundle.getBundle ()进行资源定位
- 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释