题记:
最近在加载资源文件的时候,碰到一些问题,也看了很多类似代码,发现有的在用Class.getResource() 加载资源,有些在用ClassLoader.getResource()加载资源,搞不清楚区别,最近学习了些资料,在此总结下;
提纲:
1 ClassLoader
getResource()
getResourceAsStream()
getSystemResource()
2 Class
getResource()
getResourceAsStream()
getSystemResource()
3 常用路径的资源加载方式
1.1 ClassLoader.getResource()
先看源代码:
/**
* Finds the resource with the given name. A resource is some data
* (images, audio, text, etc) that can be accessed by class code in a way
* that is independent of the location of the code.
*
* <p> The name of a resource is a '<tt>/</tt>'-separated path name that
* identifies the resource.
*
* <p> This method will first search the parent class loader for the
* resource; if the parent is <tt>null</tt> the path of the class loader
* built-in to the virtual machine is searched. That failing, this method
* will invoke {@link #findResource(String)} to find the resource. </p>
*
*/
public URL getResource(String name) {
URL url;
if (parent != null) {
url = parent.getResource(name);
} else {
url = getBootstrapResource(name);
}
if (url == null) {
url = findResou