zoukankan      html  css  js  c++  java
  • Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的区别

    Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。

         例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源。

         如果这个name是以 '/' 开头的,那么就会从classpath的根路径下开始查找。

      

    ClassLoader.getResourceAsStream()  无论要查找的资源前面是否带'/' 都会从classpath的根路径下查找。

        所以: MyTest.getClassLoader().getResourceAsStream("name") 和

                MyTest.getClassLoader().getResourceAsStream("name") 的效果是一样的。
     
     
    1. Class.getResourceAsStream(String path) :
    path 不以'/'开头时默认是从此类所在的包下取资源,以'/'开头则是从ClassPath(Src根目录)根下获取。
    其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
     
    2. Class.getClassLoader.getResourceAsStream(String path) :
    默认则是从ClassPath根下获取,path不能以'/'开头,最终是由ClassLoader获取资源。
     
    3. ServletContext. getResourceAsStream(String path):
    默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。
     
    如果是在SRC 下,可以用第一种方式,如果是在WEB环境下,用/WEB-INF/classes/xxx.file 应该是可以的,但是这个我没有试过。
     
    转自:http://blog.csdn.net/zhanghaipeng1989/article/details/19332489
  • 相关阅读:
    动手动脑(类与对象作业再次提交)
    论团队(类与对象邮箱作业再次提交)
    流于形式的沟通
    加密
    string类中一些方法的使用
    StringEquals的用法
    命令行接收数字求和
    计算机思维
    SpringBoot之Callable处理异步请求
    MySQL8.0 zip版本 安装
  • 原文地址:https://www.cnblogs.com/feibazhf/p/6259591.html
Copyright © 2011-2022 走看看