from:http://blog.csdn.net/explorers/archive/2007/08/02/1722740.aspx
这两个方法还是略有区别的, 以前一直不加以区分,直到今天发现要写这样的代码的时候运行
错误, 才把这个问题澄清了一下。
基本上,两个都可以用于从 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")
分享到:
相关推荐
4. **使用`defineClass`方法定义类**:当输入流不为空时,使用`ClassLoader`的`defineClass`方法将字节数组转换为`Class`对象。 5. **实例化类**:通过`myLoader.loadClass(...
Java 文件路径详解是 Java 中获取文件路径的方式,包括 Class.getResourceAsStream() 和 ClassLoader.getResourceAsStream() 两种方法。这些方法可以帮助开发者快速获取文件路径,以便于读取文件的内容。
在Java编程中,`getClass().getResourceAsStream()`是一个非常实用的方法,用于从类路径(Classpath)中加载资源,如配置文件、图片、字体等。这个方法返回一个`InputStream`对象,可以通过它读取到资源文件的内容。...
#### 四、`getResource`和`getResourceAsStream`方法 ##### 4.1 方法介绍 `ClassLoader`提供了两个重要的方法用于资源定位: - `public URL getResource(String name)`:返回一个`URL`对象,表示名为`name`的资源...
2. **使用ClassLoader资源流**:通过`ClassLoader.getResource()`或`getResourceAsStream()`获取类路径上的资源,这种方法适用于JAR文件或被打包的Class文件。 3. **Java SPI服务发现**:通过`java.util....
- 当使用`Class.getResource`或`Class.getResourceAsStream`时,如果路径不以 `/` 开头,那么查找将从调用该方法的类所在的包开始。 - 当使用`ClassLoader.getResource`或`ClassLoader.getResourceAsStream`时,路径...
`WebappClassLoader`实现了`getResource`和`getResourceAsStream`方法,以便于获取Web应用中的资源。 4. **同步机制**:为了保证并发环境下的安全,`WebappClassLoader`使用锁机制来控制对类加载的访问,避免了多...
1. 使用`Class.getResource()`和`Class.getResourceAsStream()` - `Class.getResource(String path)`方法返回一个`URL`对象,表示相对于当前类的类路径上的资源的位置。例如,如果你有一个名为`config.properties`...
5. **使用class.getClassLoader()的getResourceAsStream()方法** 同样,如果你有一个类加载器,可以通过`getResourceAsStream()`方法获取流。例如: ```java String name = "config.properties"; InputStream in...
从Java JAR文件包中读取资源是Java...通过合理利用`getResource`和`getResourceAsStream`等方法,结合正确的资源路径和类加载器,可以高效地实现这一目标。理解这些概念对于构建可移植且健壮的Java应用程序至关重要。
5. **使用 `class.getClassLoader()` 所得到的 `java.lang.ClassLoader` 的 `getResourceAsStream()` 方法** 这种方法与第4种类似,只是通过类加载器获取资源输入流。示例: ```java InputStream in = ...
### 方法四:使用`Class`对象的`getResourceAsStream()`方法 这种方法允许你根据类路径中的资源名称读取Properties文件。 ```java import java.io.InputStream; import java.util.Properties; public class ...
使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法加载properties文件 Java中的ClassLoader类提供了getResourceAsStream()方法,该方法可以加载properties文件。下面是使用...
5. **使用 `class.getClassLoader()` 的 `getResourceAsStream()` 方法**: 类加载器也可以用来获取输入流,这适用于类路径中的资源。示例: ```java InputStream in = JProperties.class.getClassLoader()....
解决方法是使用 ClassLoader 的 getResourceAsStream() 方法获取资源文件的流,通过流来读取资源文件。 2. getResource() 和 getResourceAsStream() 的区别 在读取资源文件时,通常使用 getResource() 或 ...
方法五:使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法 使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法也可以读取Properties文件。...
InputStream is = classLoader.getResourceAsStream("config.properties"); ``` #### 五、反射的安全性和性能问题 虽然Java反射机制提供了强大的功能,但在使用时也应注意其潜在的问题: - **安全性**: 由于反射...
这种方法利用了Java类加载机制,通过类的`getResourceAsStream()`方法加载位于类路径下的`Properties`文件。 **代码示例:** ```java import java.io.InputStream; import java.util.Properties; public class ...
这种方法类似于`Class.getResourceAsStream()`,不同之处在于它通过类加载器来查找资源,这使得它在某些情况下更加灵活。 ```java import java.io.InputStream; import java.util.Properties; public class ...
- **`ClassLoader`和`Class.getResourceAsStream()`**:适用于类路径下的资源文件。 - **`URL`**:适用于网络资源文件。 - **`Files.newBufferedReader()`**:适用于Java 7及以上版本,代码更简洁。 - **`...