这两个方法还是略有区别的, 以前一直不加以区分,直到今天发现要写这样的代码的时候运行
错误, 才把这个问题澄清了一下。
基本上,两个都可以用于从 classpath 里面进行资源读取, classpath包含classpath中的路径
和classpath中的jar。
两个方法的区别是资源的定义不同, 一个主要用于相对与一个object取资源,而另一个用于取相对于classpath的
资源,用的是绝对路径。
在使用Class.getResourceAsStream 时, 资源路径有两种方式, 一种以 / 开头,则这样的路径是指定绝对
路径, 如果不以 / 开头, 则路径是相对与这个class所在的包的。
在使用ClassLoader.getResourceAsStream时, 路径直接使用相对于classpath的绝对路径。
举例,下面的三个语句,实际结果是一样的:
com.explorers.Test.class.getResourceAsStream("abc.jpg")
= com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")
= ClassLoader.getResourceAsStream("com/explorers/abc.jpg")
分享到:
相关推荐
在Java编程中,`getClass().getResourceAsStream()`是一个非常实用的方法,用于从类路径(Classpath)中加载资源,如配置文件、图片、字体等。这个方法返回一个`InputStream`对象,可以通过它读取到资源文件的内容。...
在Java编程中,`getResourceAsStream` 是一个非常实用的方法,用于从类路径或者特定上下文中获取资源流,通常用来读取配置文件、图片、XML文档等静态资源。这个方法在处理与代码打包在一起的非代码文件时非常方便。...
Java中getResourceAsStream的用法.md
- `getResourceAsStream()`返回一个`InputStream`,适用于读取二进制数据,如图片。 - 示例代码: ```java // 获取当前类的Class对象 Class<?> currentClass = MyClass.class; // 通过相对路径获取资源 ...
本篇文章将详细探讨Java提供的两种主要方法:`Class.getResource`和`Class.getResourceAsStream`,用于加载类路径下的资源文件。 首先,`Class.getResource`方法返回一个`URL`对象,它表示资源的位置。这个方法接受...
在 Java 中,有两种方式可以获取文件路径,即使用 Class.getResourceAsStream() 和 ClassLoader.getResourceAsStream()。 Class.getResourceAsStream() Class.getResourceAsStream() 方法返回的是一个 InputStream...
is=getClass().getResourceAsStream("/sprite"+toString(sl)+".dat"); readSprite(is); } if(sl==0&&!dlg[0]) message(2); weatherTask=new TimerTask(this,-2); timer.schedule(weatherTask,0,400)...
- 当使用`Class.getResource`或`Class.getResourceAsStream`时,如果路径不以 `/` 开头,那么查找将从调用该方法的类所在的包开始。 - 当使用`ClassLoader.getResource`或`ClassLoader.getResourceAsStream`时,路径...
在Servlet环境下,还可以使用`javax.servlet.ServletContext`的`getResourceAsStream()`方法来读取Web应用中的资源。例如: ```java String path = "/WEB-INF/config.properties"; InputStream in = context....
`getResource()`返回一个`URL`对象,`getResourceAsStream()`则返回一个`InputStream`,适合于读取二进制数据,如图片。 - `Class.getResource(String path)`:此方法会根据给定的相对路径,从当前类的包中查找...
5. **使用 `class.getClassLoader()` 所得到的 `java.lang.ClassLoader` 的 `getResourceAsStream()` 方法** 这种方法与第4种类似,只是通过类加载器获取资源输入流。示例: ```java InputStream in = ...
在Servlet环境下,还可以使用 `javax.servlet.ServletContext` 的 `getResourceAsStream()` 方法来加载资源,适合部署在Web应用服务器中: ```java ServletContext context = ...; // 获取ServletContext实例 ...
- 如果你的资源文件是Java项目的一部分,你可以在类路径中直接导入它们,然后使用`getClass().getResource()`或`getClass().getResourceAsStream()`方法。 4. 文件系统访问 - 如果资源文件位于文件系统的某个位置...
这两个方法利用了前面讨论的概念,特别是`getResourceAsStream`,以及字节数组流(`ByteArrayOutputStream`)和工具包(`Toolkit`)来创建和处理图像。 ```java public class ResourseReader { public static ...
- **方法**:类加载器提供了`getResource`和`getResourceAsStream`等方法用于查找和读取资源。 2. **资源文件的路径表示**: - 在jar包内部,资源文件的路径通常是以`/`开头的相对路径表示。例如,如果资源文件...
在Java类中,读取配置文件信息可以使用多种方法,其中一种方法是使用`this.getClass().getClassLoader().getResourceAsStream`方法。 `this.getClass().getClassLoader().getResourceAsStream`方法是Java类中的一种...
例如,我们可以获取`ConnectionPool`类的类加载器,然后根据类的包路径定位到`database.properties`,并通过`getResourceAsStream()`方法读取文件内容。伪代码如下: ```java ClassLoader loader = ConnectionPool....
InputStream inputStream = getClass().getResourceAsStream("/image/Environment.ini"); ``` 2. **`getResource()`** 该方法返回资源文件的URL,可以用于读取任何类型的资源文件。示例代码如下: ```java ...
本实例代码将展示如何使用`Class.getResourceAsStream`方法来实现这一功能,该方法是从类路径中加载资源的便捷方式。 首先,让我们了解`Class.getResourceAsStream`的工作原理。这个方法接受一个字符串参数,该参数...