this.class.getClassLoader().getResourceAsStream(path)

标签: java classloader path web xml
203人阅读 评论(0) 收藏 举报
分类:

相信很多写过web项目的会对this.this.class.getClassLoader().getResourceAsStream(path)这段代码有疑惑。我们用这段代码可以获取在classpath路径下的资源文件的输入流。为什么是classpath而不是src,因为当web项目运行时,IDE编译器会把src下的一些资源文件移至WEB-INF/classes,classPath目录其实就是这个classes目录。这个目录下放的一般是web项目运行时的class文件、资源文件(xml,properties...);

然后我们可以仔细分析一下这段代码,this.class是获取当前类的class对象,getClassLoader()是获取当前的类加载器

,什么是类加载器?简单点说,就是用来加载java类的,类加载器就是负责把class文件加载进内存中,并创建一个java.lang.Class类的一个实例,也就是class对象,并且每个类的类加载器都不相同.getResourceAsStream(path)是用来获取资源的,因为这是ClassLoader(类加载器)了获取资源,而类加载器默认是从classPath下获取资源的,因为这下面有class文件.所以这段代码总的意思是通过类加载器在classPath目录下获取资源.并且是以流的形式.同时path不能以’/'开头,否则会报错.

顺便聊一下java类加载的过程吧

3个步骤:1.加载,加载类的二进制文件。

2.链接:

  (1)验证,验证字节码的结构是否正确

  (2)准备,给静态成员分配空间并赋予默认值(注意这里:静态变量的第一次赋值是在类加载的时候就进行了,与后面初始化的时候的自定义赋值不是同一过程,也就是静态成员在初始化的时候可能已被赋值二次了)

  (3)解析,将符号引用变为直接引用

3初始化,为静态成员赋予自己给定的初值

类的实例化的顺序:

(1)静态成员、方法与静态代码块的初始化与执行

(2)普通成员、方法与普通代码块的初始化与执行

(3)构造函数的执行(父类的构造函数先执行


查看评论

this.class.getClassLoader().getResourceAsStream

转载自:http://xixinfei.iteye.com/blog/1256291   this.getClass().getClassLoader().getResource("t...
  • hgsunyong
  • hgsunyong
  • 2013-10-15 10:30:34
  • 2557

this.class.getClassLoader().getResourceAsStream与this.class.getResourceAsStream

本文部分转自:http://xixinfei.iteye.com/blog/1256291 this.getClass().getClassLoader().getResource("templat...
  • lydong_
  • lydong_
  • 2018-04-04 09:22:40
  • 2

Class.getResourceAsStream(String path)

Java中getResourceAsStream的用法 首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String ...
  • qq_23013625
  • qq_23013625
  • 2016-08-03 14:16:16
  • 161

关于Servlet中getServletContext() 的getResourceAsStream(String path) 方法中的path路径问题

这里的getResourceAsStream(String path) 的path路径经常容易搞错,因为不是eclipse/my
  • cyp331203
  • cyp331203
  • 2014-07-10 15:07:50
  • 1139

关于this.getClass().getResourceAsStream()来读入数据!~

JAVA里面对于类进行调用配置资源的文件数据,以this.getClass().getResourceAsStream()来读取比较合适。路径采用相对路径直接可以从工程的path路径去找。主要问题是如...
  • doomhuntercj
  • doomhuntercj
  • 2007-02-01 15:38:00
  • 2983

class.getResource()和class.getResourceAsStream()的用法

package com.lxz; import java.io.InputStream; import org.junit.Test; public class FileDemo { @Test...
  • u011728105
  • u011728105
  • 2015-09-29 00:25:28
  • 2966

Java中getResourceAsStream的用法 (取路径)

Java中getResourceAsStream的用法 首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(Strin...
  • icanlove
  • icanlove
  • 2015-03-06 12:01:16
  • 5791

Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的区别

Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。      例如你写了一个MyTest类在包com.test.mycode 下,那么MyTes...
  • zhanghaipeng1989
  • zhanghaipeng1989
  • 2014-02-17 13:15:39
  • 7898

getResourceAsStream方法及缓存问题

首先,Java中的getResourceAsStream有以下几种:  1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所...
  • danchaofan0534
  • danchaofan0534
  • 2017-07-30 20:37:00
  • 682

相对路径获取JAVA配置文件Class.getResourceAsStream() & ClassLoader的getResourceAsStream()

Class.getResourceAsStream() & ClassLoader的getResourceAsStream()注意两点:1,用Class.getResourceAsStream() 时...
  • yangm1203
  • yangm1203
  • 2007-07-11 22:25:00
  • 7422
    个人资料
    等级:
    访问量: 443
    积分: 25
    排名: 206万+
    文章分类
    文章存档