• 关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String name)的路径name问题


    关于class.getResourceAsStream(String name)与  class.getClassLoader().getResourceAsStream(String name)的路径name问题

    首先用类加载资源文件的方式可以有以下三种:

    (包结构图)

    1)   InputStream inStream = DaoFactory.class.getResourceAsStream("dao.properties");

    2)   inStream=DaoFactory.class.getResourceAsStream("/com/jdbc/dao/dao.properties")

    3)   inStream=DaoFactory.class.getClassLoader().getResourceAsStream("com/jdbc/dao/dao.properties");

    第一种和第二种方式是采用Class对象去加载,第三种采用ClassLoader对象去加载资源文件,之所以Class对象也可以加载资源文件是因为Class类封装的ClassLoader的getResourceAsStream方法。从Class类中的源码中可以看出:

    之所以这样做无疑还是方便客户端的调用,省的每次获取ClassLoader才能加载资源文件的麻烦。

    路径问题:

    1. 第三种是最本质的做法,前两种也是基于第三种去实现的。JVM会使用Bootstrap Loader去加载资源文件。所以路径还是这种相对于工程的根目录即"com/jdbc/dao/dao.properties"(不需要“/)
    2. 第一种是采用的相对路径,资源文件相对于当前这个类即(DaoFactory类)的位置,这种方式Class对象做了一些处理。即resloveName(name)这个方法。最终name还是会转换成适合第三方式的name参数
    3. 第二种是采用绝对路径,绝对路径是相对于classpath根目录的路径(工程里src目录对应bin目录(存放.class文件的目录))。

    原文: http://www.iteye.com/topic/1021214

    其他一些文章:

    http://www.cnblogs.com/javayuer/archive/2011/01/02/1924192.html

  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/qiangupc/p/3912400.html
Copyright © 2020-2023  润新知