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

Class和ClassLoader.getResource获取资源

时间:2014-05-16 02:11:02      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:java 基础

资源就是系统内、项目内的各种文件。在Java中获取可以用File类和Class.getResource获取资源,直观的说,File是依赖于文件系统和操作系统的,通过相对和绝对路径定位,使用File接口可以用于获取系统内任何路径下的普通文件。Class和ClassLoader可以用于获取项目环境中的资源,‘环境中’的具体定义就是classpath。classpath相当于getResource参数的跟目录,ClassLoader.getResource是只能从这个根目录开始定位资源,Class.getResource的参数字符串如果以‘/’开始,就表示从classpath开始。

  • classpath包括写什么

   classpath并非一个目录,其是由很多目录组成,具体包含哪些目录可以在项目的根目录中的.classpath文件中看到,如下例子,Test项目下的.classpath

bubuko.com,布布扣

bubuko.com,布布扣

也就是说,项目下的src,bin目录都包含在classpath中,当使用ClassLoader.getResource和Class.getResource("/****")时会从这些目录中一次查询有没有对应的资源。ClassLoader.getResource是不认识以“/”开始的字符串的,也就是ClassLoader.getResource("/")将返回null,如果要获取根目录,可以通过ClassLoader.getResource(""),其得到的是bin目录的URL,也就是说,通过是得到.class文件位置对应的classpathentry,而不是.java文件对应的classpathentry。

   Class.getResource有两种方式,第一种是通过以"/"开始的绝对路径,"/"表示上面的classpath,Java会逐一查询每个classpathentry对应位置,等价于ClassLoader.getResource("**/**"),第二种方式通过Class.getResource("***/***"),这是相对于Class实例对象的.class文件所在的目录位置,而非调用getResource类的.class文件所在位置的路径。也就是说,如果在Test.java里面调用Test2.class.getResource("***/***"),则"***/***"是相对Test2.class文件所在目录的路径。

本文出自 “深思JavaEE” 博客,请务必保留此出处http://xjava.blog.51cto.com/2949562/1412044

Class和ClassLoader.getResource获取资源,布布扣,bubuko.com

Class和ClassLoader.getResource获取资源

标签:java 基础

原文地址:http://xjava.blog.51cto.com/2949562/1412044

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