JAVA程序中inputStream方法中inputStream路径问题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

关于class.getResourceAsStream(Stringname)与class.getClassLoader().getResourceAsStream(Stringname)的路径name问题首先用类加载资源文件的方式可以有以下三种:(包结构图)1)InputStreaminStream=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会使用BootstrapLoader去加载资源文件。所以路径还是这种相对于工程的根目录即com/jdbc/dao/dao.properties(不需要“/”)。2.第一种是采用的相对路径,资源文件相对于当前这个类即(DaoFactory类)的位置,这种方式Class对象做了一些处理。即resloveName(name)这个方法。最终name还是会转换成适合第三方式的name参数3.第二种是采用绝对路径,绝对路径是相对于classpath根目录的路径(工程里src目录对应bin目录(存放.class文件的目录))。(Class类中resolveName方法)

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功