`
Josh_Persistence
  • 浏览: 1649919 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Class和ClassLoader的getResourceAsStream的区别

阅读更多

一、共同点:

两个都可以用于从 classpath 里面进行资源读取。

 

二、不同点:资源的定义不同

1、Class用于相对于一个Object取资源。

2、ClassLoader相对于classpath取资源,用的是绝对路径。

3、路径的不同:

      3.1:在使用Class.getResourceAsStream 时, 资源路径有两种方式,

一种以 / 开头,则这样的路径是指定绝对路径,

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

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

 

三、实例说明:Tools.class.getClassLoader().getResourceAsStream(file);

      首先,Tools.class是获得对象当前的类类型,这部分数据存在方法区中,

      然后,在类类型上调用getClassLoader()方法是得到当前类型的类加载器,在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),这样通过当前类的加载器来加载资源也就是保证是和类类型同一个加载器加载的。
     最后,调用了类加载器的getResourceAsStream()方法来加载文件资源。

 

 

 

 

1
1
分享到:
评论

相关推荐

    ClassLoader

    4. **使用`defineClass`方法定义类**:当输入流不为空时,使用`ClassLoader`的`defineClass`方法将字节数组转换为`Class`对象。 5. **实例化类**:通过`myLoader.loadClass(...

    Java文件路径详解

    在 Java 中,有两种方式可以获取文件路径,即使用 Class.getResourceAsStream() 和 ClassLoader.getResourceAsStream()。 Class.getResourceAsStream() Class.getResourceAsStream() 方法返回的是一个 InputStream...

    java classloader classpath 张孝祥

    类加载器(`ClassLoader`)负责将编译后的`.class`文件加载到Java虚拟机(JVM)中执行,而类路径(`ClassPath`)则是指明了这些`.class`文件的位置。本文主要围绕Java类加载器和类路径展开讨论,以加深对Java运行时...

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

    `ClassLoader`是Java用来加载类和资源的对象,它能够遍历整个`Classpath`来寻找指定的资源。由于`getClassLoader().getResourceAsStream()`是从类路径的根开始查找,所以也不需要在`fileName`前添加斜杠。 当你的...

    Tomcat 5.0.18 ClassLoader source code insight

    `WebappClassLoader`实现了`getResource`和`getResourceAsStream`方法,以便于获取Web应用中的资源。 4. **同步机制**:为了保证并发环境下的安全,`WebappClassLoader`使用锁机制来控制对类加载的访问,避免了多...

    java文件路径获取

    - 当使用`Class.getResource`或`Class.getResourceAsStream`时,如果路径不以 `/` 开头,那么查找将从调用该方法的类所在的包开始。 - 当使用`ClassLoader.getResource`或`ClassLoader.getResourceAsStream`时,路径...

    扫描Class文件的方法

    2. **使用ClassLoader资源流**:通过`ClassLoader.getResource()`或`getResourceAsStream()`获取类路径上的资源,这种方法适用于JAR文件或被打包的Class文件。 3. **Java SPI服务发现**:通过`java.util....

    Java 读取资源文件

    1. 使用`Class.getResource()`和`Class.getResourceAsStream()` - `Class.getResource(String path)`方法返回一个`URL`对象,表示相对于当前类的类路径上的资源的位置。例如,如果你有一个名为`config.properties`...

    从java jar文件包中读资源的常用方法

    从Java JAR文件包中读取资源是Java...通过合理利用`getResource`和`getResourceAsStream`等方法,结合正确的资源路径和类加载器,可以高效地实现这一目标。理解这些概念对于构建可移植且健壮的Java应用程序至关重要。

    SpringBoot如何读取war包jar包和Resource资源

    3. Class.getResource() 和 ClassLoader.getResource() 的区别 在读取资源文件时,经常使用 Class.getResource() 或 ClassLoader.getResource() 方法。两种方法都可以读取资源文件,但是它们的使用场景和返回值不同...

    Java-recourse.rar_java读取recouse

    String content = IOUtils.toString(YourClass.class.getResourceAsStream("/resource.txt"), StandardCharsets.UTF_8); ``` 5. **Spring Framework**:在Spring框架中,可以使用`Resource`接口来操作资源,例如...

    java反射说明

    InputStream is = classLoader.getResourceAsStream("config.properties"); ``` #### 五、反射的安全性和性能问题 虽然Java反射机制提供了强大的功能,但在使用时也应注意其潜在的问题: - **安全性**: 由于反射...

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

    InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in); ``` 这个方法可以处理任何由类加载器加载的资源。 6. **使用java.lang....

    读取war包或jar包内的文件

    2. **getResource() 和 getResourceAsStream()**: 这两个方法是ClassLoader和类的Class对象提供的。`getResource()`返回一个URL,用于定位资源的路径;`getResourceAsStream()`则返回一个InputStream,可以直接读取...

    Java读取Properties文件的六种方法.txt

    - **`ClassLoader`和`Class.getResourceAsStream()`**:适用于类路径下的资源文件。 - **`URL`**:适用于网络资源文件。 - **`Files.newBufferedReader()`**:适用于Java 7及以上版本,代码更简洁。 - **`...

    java中获取类资源的方法总结

    Java 中获取类资源的方法总结可以通过 ClassLoader 或 Class 对象来实现,两者都可以用来获取类路径下的资源文件,但是它们的搜索路径和方式不同。 在实际开发中,我们需要根据具体情况选择合适的方法来获取类资源...

    java类动态获取相对路径

    `ClassLoader`提供了`getResource`和`getResourceAsStream`方法来获取资源的URL或输入流。例如,如果我们有一个名为`res.txt`的文件与`MyClass`同级,可以这样获取其URL: ```java URL resourceUrl = classLoader...

    Java程序中的配置文件的存放和读取[文].pdf

    ClassLoader loader = ConnectionPool.class.getClassLoader(); String packageName = ConnectionPool.class.getPackage().getName().replace('.', '/'); String path = packageName + "/database.properties"; ...

    深入java虚拟机(八)开发自己的类加载器 1

    自定义类加载器通常需要继承`java.lang.ClassLoader`类,并重写`findClass(String name)`方法。此方法接收类名作为参数,然后找到对应的`.class`文件并将其转换为`Class`对象。以下是一个简单的类加载器示例: ```...

    Java加载properties文件的六种方法

    5. **使用 `class.getClassLoader()` 所得到的 `java.lang.ClassLoader` 的 `getResourceAsStream()` 方法** 这种方法与第4种类似,只是通过类加载器获取资源输入流。示例: ```java InputStream in = ...

Global site tag (gtag.js) - Google Analytics