Class.getResourceAsStream和ClassLoader.getResourceAsStream

首先粘取二者的API:

Class类:

getResourceAsStream

public InputStream getResourceAsStream(String name)
查找具有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的 class loader 实现的。此方法委托此对象的类加载器。如果此对象通过引导类加载器加载,则此方法将委托给 ClassLoader.getSystemResourceAsStream(java.lang.String)

在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:

  • 如果 name'/' 开始 ('\u002f'),则绝对资源名是 '/' 后面的 name 的一部分。
  • 否则,绝对名具有以下形式:
       modified_package_name/name
    

    其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.' ('\u002e')。

参数:
name - 所需资源的名称
返回:
一个 InputStream 对象;如果找不到带有该名称的资源,则返回 null
抛出:
NullPointerException - 如果 namenull
从以下版本开始:
JDK1.1

 

ClassLoader类:

getResourceAsStream

public InputStream getResourceAsStream(String name)
返回读取指定资源的输入流。

getResource(String) 的文档中描述了搜索顺序。

参数:
name - 资源名称
返回:
用于读取资源的输入流,如果无法找到资源,则返回 null
从以下版本开始:
1.1

 

        从API上可以看出,Class也委托了类加载器进行读取资源,只是在对资源的定位上使用了不同的方式;从功能上讲,两个都可以用于从 classpath 里面进行资源读取,  classpath包含classpath中的路径和classpath中的jar。

        两个方法的区别是资源的定义不同,一个主要用于相对与一个对象取资源,而另一个用于取相对于classpath的资源,用的是绝对路径。
        在使用Class.getResourceAsStream 时,资源路径有两种方式:

          1、以 / 开头,则这样的路径是指定绝对路径;

          2、不以 / 开头,则路径是相对与这个class所在的包的。

        在使用ClassLoader.getResourceAsStream时,路径直接使用相对于classpath的绝对路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTPServer.class.getResourceAsStream是一个用于加载资源文件的方法。在给定的类路径中搜索指定的资源文件,并返回一个输入流,以便读取该资源文件的内容。这个方法通常用于加载配置文件等资源。在你提供的引用中,代码示例中的InputStream is = cl.getResourceAsStream("config.properties")就是使用了这个方法来加载名为"config.properties"的配置文件。\[1\] 需要注意的是,getResourceAsStream方法的参数是相对于类路径的相对路径。在这个例子中,"config.properties"文件应该位于与PathTest类相同的包中。如果找到了该资源文件,将返回一个非空的输入流,否则返回null。\[2\] 至于你提到的HTTPServer.class.getResourceAsStream,根据提供的信息,无法确定具体的代码或上下文。如果你能提供更多的信息,我可以给出更准确的答案。 #### 引用[.reference_title] - *1* *2* [ClassLoader的getResourceAsStream方法使用及在java和web项目中的路径问题](https://blog.csdn.net/Coding__man/article/details/81118275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Tomcat源码解读『server.xml解析』](https://blog.csdn.net/weixin_41835612/article/details/111401731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值