Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。
例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name")
会在com.test.mycode包下查找相应的资源。
如果这个name是以 '/' 开头的,那么就会从classpath的根路径下开始查找。
ClassLoader.getResourceAsStream() 无论要查找的资源前面是否带'/' 都会从classpath的根路径下查找。
所以: MyTest.getClassLoader().getResourceAsStream("name") 和
MyTest.getClassLoader().getResourceAsStream("name") 的效果是一样的。
顺便提下JAVA中类的加载器:
一共有三种加载器
bootstrap classloader :负责加载JAVA核心类( jre 下lib和class目录中的内容)
extension classloader :负责加载JAVA扩展类(jre 下lib/ext 目录中的内容)
system classloader :负责加载应用指定的类 (环境变量classpath中配置的内容)
一个类的加载顺序也是按上面的排列来的,这样就能保证系统的类能先加载。
与此同时用户也可以自己定义ClassLoader,用来加载特殊的资源。
相关推荐
在Java编程中,`getClass().getResourceAsStream()`是一个非常实用的方法,用于从类路径(Classpath)中加载资源,如配置文件、图片、字体等。这个方法返回一个`InputStream`对象,可以通过它读取到资源文件的内容。...
在 Java 中,有两种方式可以获取文件路径,即使用 Class.getResourceAsStream() 和 ClassLoader.getResourceAsStream()。 Class.getResourceAsStream() Class.getResourceAsStream() 方法返回的是一个 InputStream...
- 当使用`Class.getResource`或`Class.getResourceAsStream`时,如果路径不以 `/` 开头,那么查找将从调用该方法的类所在的包开始。 - 当使用`ClassLoader.getResource`或`ClassLoader.getResourceAsStream`时,路径...
1. 使用`Class.getResource()`和`Class.getResourceAsStream()` - `Class.getResource(String path)`方法返回一个`URL`对象,表示相对于当前类的类路径上的资源的位置。例如,如果你有一个名为`config.properties`...
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in); ``` ### 6. 使用`java.lang.ClassLoader.getSystemResourceAsStream()` 这是一...
`.properties`文件通常存放在类路径(classpath)下,这意味着它们可以放在工程的`src/main/resources`目录下(对于Maven项目),或者与编译后的`.class`文件位于同一目录下。 2. **获取资源文件**: - 使用`...
- 使用 `this.getClass().getResourceAsStream()`,如:`InputStream inputstream = this.getClass().getResourceAsStream("/info.properties");` 这种情况要求文件路径以 `/` 开头,表示从类路径的根开始查找。 3...
#### 与反射的区别 虽然该实例看起来与反射机制类似,但二者在实现细节上有所不同: - **反射机制**通常涉及使用`Class.forName()`方法或`Constructor.newInstance()`方法来创建对象。 - **自定义类加载器**则是通过...
例如,我们可以通过`Class.getResource()`或`Class.getResourceAsStream()`方法来获取到类路径下的资源。例如,如果有一个名为`config.properties`的配置文件与某个类在同一个包下,我们可以在类中这样获取: ```...
在Java中,Properties文件一般存放在类路径(classpath)下,这通常是指工程项目的类包(class package)结构中。这样,程序在运行时可以通过类加载器访问到这些资源文件。 接下来,我们讨论两种获取Properties文件...
- **获取InputStream**:使用`Class.getResourceAsStream()` 或 `ClassLoader.getResourceAsStream()` 方法,传入文件路径(相对于类路径)来获取InputStream。 - **读取文件**:创建Properties对象,然后调用其`...
try (InputStream in = ClassLoaderResourceExample.class.getClassLoader().getResourceAsStream(fileName)) { props.load(in); System.out.println("Read properties from class loader: " + props); } catch ...
这种方法类似于`Class.getResourceAsStream()`,不同之处在于它通过类加载器来查找资源,这使得它在某些情况下更加灵活。 ```java import java.io.InputStream; import java.util.Properties; public class ...
通常,Properties文件会放在类路径(classpath)下,具体来说,是与编译后的.class文件相同的包结构内。这样做便于Java程序在运行时能够通过类加载器轻松找到这些资源文件。 在Java中,有两种主要方式来获取...
InputStream is = MyClass.class.getResourceAsStream("/config.properties"); try { prop.load(is); } finally { is.close(); } ``` 这里`MyClass`代表当前类,也可以替换为其他类,资源文件路径通常以斜杠...
InputStream input = YourClass.class.getResourceAsStream("/config.properties"); Properties prop = new Properties(); prop.load(input); ``` 3. 使用`java.nio.file`包 Java 7引入了NIO.2 API,我们可以使用`...
- **`ClassLoader`和`Class.getResourceAsStream()`**:适用于类路径下的资源文件。 - **`URL`**:适用于网络资源文件。 - **`Files.newBufferedReader()`**:适用于Java 7及以上版本,代码更简洁。 - **`...
当Properties文件与类路径相关联时,可以使用类的`getResourceAsStream()`方法。例如: ```java String name = "config.properties"; InputStream in = JProperties.class.getResourceAsStream(name); ...
- 使用`Class.getResourceAsStream(String name)`:通过类路径读取资源文件。 - 使用`ClassLoader.getResourceAsStream(String name)`:通过类加载器读取资源文件。 在处理包含中文字符的配置文件时,可能会遇到...
5. **使用 `class.getClassLoader()` 所得到的 `java.lang.ClassLoader` 的 `getResourceAsStream()` 方法** 这种方法与第4种类似,只是通过类加载器获取资源输入流。示例: ```java InputStream in = ...