Advertisement
Guest User

Untitled

a guest
May 24th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. 1. 两个都可以用于从 classpath 里面进行资源读取, classpath包含classpath中的路径和classpath中的jar。
  2. 2. 两个方法的区别是资源的定义不同, 一个主要用于相对与一个object取资源,而另一个用于取相对于classpath的资源,用的是绝对路径。
  3. 3. 在使用Class.getResourceAsStream 时, 资源路径有两种方式, 一种以 / 开头,则这样的路径是指定绝对路径, 如果不以 / 开头, 则路径是相对与这个class所在的包的。
  4.  
  5. 在开发java程序的过程中,我们经常要做的一件事就是获取资源。那么什么是资源呢?说白了,在计算机里那就是一堆数据。只是这堆数据对我们的java程序有多种表现形式,一般来说有File,URL,InputStream等等。而单就文件这一项就有很多种:配置文件,java类文件,jps文件,图片、css、js文件等等。面对这林林总总的资源,我们在设计一个读取资源的接口时,就需要针对不同形式的资源提供方法,这样就导致我们的接口还是与实际的资源形式绑定在一起,未能完全的抽象。另外,在java程序中资源的存放位置也是各异的。有的存放在classpath中,有的存放在文件系统中,有的存放在web应用中。而对于不同位置的资源,java程序获取这些资源的方法各有不同。
  6. A、获取classpath中的资源:
  7.  
  8. ```
  9. URL url = this.getClass().getResource("resource_name");
  10. URL url = this.getClass().getClassLoader().getResource("resource_name");
  11. URL url = Thread.currentThread().getContextClassLoader().getResource("resource_name");
  12. ```
  13.  
  14. 那么在jdk中为什么又提供了三种方式来获取classpath下的资源呢?这其中是有些来头的。
  15. 第一行代码中是利用Class类的实例来获取,第二行代码是使用加载当前类的classloader来获取。
  16. 看下jdk中的源代码会发现class类的实例最后还是委托加载他的classloader来获取资源的。
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement