`
Riddick
  • 浏览: 631565 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java中getResourceAsStream的用法

    博客分类:
  • J2SE
阅读更多
首先,Java中的getResourceAsStream有以下几种:
1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。

2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。

3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。

4. Jsp下的application内置对象就是上面的ServletContext的一种实现。

其次,getResourceAsStream 用法大致有以下几种:

第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类me.class ,同时有资源文件myfile.xml

那么,应该有如下代码:

me.class.getResourceAsStream("myfile.xml");

第二:在me.class目录的子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.y.file 目录下有资源文件myfile.xml

那么,应该有如下代码:

me.class.getResourceAsStream("file/myfile.xml");

第三:不在me.class目录下,也不在子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.file 目录下有资源文件myfile.xml

那么,应该有如下代码:

me.class.getResourceAsStream("/com/x/file/myfile.xml");

总结一下,可能只是两种写法

第一:前面有 “   / ”

“ / ”代表了工程的根目录,例如工程名叫做myproject,“ / ”代表了myproject

me.class.getResourceAsStream("/com/x/file/myfile.xml");

第二:前面没有 “   / ”

代表当前类的目录

me.class.getResourceAsStream("myfile.xml");

me.class.getResourceAsStream("file/myfile.xml");

最后,自己的理解:
getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
分享到:
评论
8 楼 lizhuang 2017-08-09  
这个方法的内部实现主要是依赖于类加载器,一般的自己实现的类是用AppClassLoader的getResourceAsStream()方法,如果是java.lang.Object这种类就是bootstrap类加载器的getSystemResourceAsStream(java.lang.String)方法。Tomcat实现的则是通过自己在java.lang.ClassLoader基础上扩展的webAppLoader实现类加器,再调用getResourceAsStream().
7 楼 prince4426 2017-03-27  
回答评论都很精彩
6 楼 kexuetou 2016-11-21  
美人如此多娇 写道
可能这样总结更好,路径前不带'/',则是相对路径;若带,则是绝对路径。(这个绝对只是在工程内的绝对,并不绝对于磁盘)。

这个总结真好,简单完美
5 楼 guoxin91 2015-02-27  
4 楼 美人如此多娇 2014-07-17  
可能这样总结更好,路径前不带'/',则是相对路径;若带,则是绝对路径。(这个绝对只是在工程内的绝对,并不绝对于磁盘)。
3 楼 巴巴米 2012-08-12  
总结的不错哦
2 楼 单眼皮大娘 2012-07-17  
给力~~~
1 楼 liubo0_0 2011-09-01  
很好.
找了很久.对我很有帮助.顶顶.

相关推荐

    Java中getResourceAsStream用法分析

    主要介绍了Java中getResourceAsStream用法,较为详细的分析了getResourceAsStream的功能及用法,需要的朋友可以参考下

    Java中getResourceAsStream的用法.md

    Java中getResourceAsStream的用法.md

    Java 使用getClass().getResourceAsStream()方法获取资源

    主要介绍了Java 使用getClass().getResourceAsStream()方法获取资源的相关资料,这里主要讲解哪种方式可以获取到文件资源,需要的朋友可以参考下

    java读取配置文件的实例代码

    java项目读取配置文件的实例代码,使用class.getClassLoader().getResourceAsStream方法。

    java类读取配置文件信息

    在java类里直接读取配置文件中的信息,用到的方法是this.getClass().getClassLoader().getResourceAsStream

    Jonny023#Study#Java-加载properties文件1

    1、使用class变量的getResourceAsStream()方法 2、使用class.getClassLoader()所得到的java.lang.Clas

    使用J2SE API读取Properties文件的六种方法

    使用java.util.Properties类的load()方法  示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));  Properties p = new Properties();  p.load(in);  2。使用java.util....

    uap-java8:基于 https 维护的数据的 Java8 User Agent 解析器

    这是基于收集的数据的 Java8 用户代理解析器实现。 为了使用这个解析器,你需要一个来自这里的解析器数据库版本: : 。 此文件不作为此存储库的一部分分发。 用法 Parser p = new Parser ( // Obtain this file ...

    day020-继承加强和设计模式代码和笔记.rar

    static是为了在静态方法中可以返回当前类中的对象 final:可加可不加,加了可以保证不可修改,且提供获取效率 3. 提供一个public修饰的方法getInstance给外部返回一个对象 4. 单例模式...

    jsp内置对象的用法

    定义:可以不加声明就在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量 JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): 1.request对象 客户端的请求信息被封装在request对象中,通过它...

    MyBatis3.2.3帮助文档(中文版).zip

    如果你更愿意直接从 Java 程序而不是 XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。 ..............................

    libphonenumber-android:Google的libphonenumber的Android端口

    该库在内部使用Class.getResourceAsStream()方法,该方法。 该库的目标是修复这两个问题。 下载 Gradle: repositories { mavenCentral() } dependencies { implementation ' io.michaelrocks:libphonenumber-...

    sciview-vistools

    帮助程序可以在其他项目中使用SciView,而无需直接调用ImageJ或Scijava代码。 用法 从sc.iview.ExampleVolume RandomAccessibleInterval<UnsignedByteType> demoImg = makeDemoImg(50, 50, 50); SvFunctions.show...

    j2me手机游戏代码

    "操作方法:"+ "\n\n" + "游戏中用方向键和2、4、6、8键控制主角移动以及进行菜单选择,5键或OK键选定,3键调出/关闭属性菜单,左软键调出操作菜单,可查看帮助信息,保存游戏或回到主菜单。"+ "\n\n" + "关键...

    数据连接池

    InputStream is = getClass().getResourceAsStream("/db.properties"); Properties dbProps = new Properties(); try { dbProps.load(is); } catch (Exception e) { System.err.println("不能读取属性文件. ...

Global site tag (gtag.js) - Google Analytics