Java 中从类路径加载资源的示例
资源在运行时发挥着重要作用,它提供必要的文件,使软件运行顺畅。这些资源可通过类路径系统访问,从而轻松读取或写入。为了在 Java 程序中有效地管理此过程,存在多个 API,例如 ClassLoader 和 Class 类 - 它们提供各种功能,用于识别应用程序环境中的资源位置并在其中检索相关信息。
算法
步骤 1 - 获取当前类的类加载器
步骤 2 - 将资源加载为 URL/输入流。
对于选择使用 getResource() 的用户,请确保您通过使用 getPath() 方法有效地转换 URL。对于那些更愿意选择 getResourcesAsStream() 的人来说,它可能有助于创建 Reader 或 InputStreamReader,从而全面检查所述资源中的所有内容。
步骤 3 - 读取资源。
步骤 4 - 关闭 InputStream、Reader 或 InputStreamReader。
步骤 5 - 处理资源加载过程中可能发生的任何异常
方法 1:使用 getResourceAsStream() 方法
加载资源的有效方法涉及使用 getResourceAsStream()。以下是一些示例代码来说明这种方法 -
示例
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
public class ResourceLoader {
public static void main(String[] args) throws IOException {
ClassLoader classLoader = ResourceLoader.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("example.txt");
byte[] resourceBytes = inputStream.readAllBytes();
// 关闭 InputStream
inputStream.close();
// 将字节数组转换为字符串并打印
String resourceString = new String(resourceBytes, StandardCharsets.UTF_8);
System.out.println(resourceString);
}
}
输出
这是一个示例资源文件。
解释
对于那些希望从名为 example.txt 的类路径资源中获取和显示文本数据的人来说,这段代码可能很有用。但是,请注意,使用 getResourceAsStream() 将获得一个 InputStream 类型的返回值 - 必须先将其更改为字节数组,然后再使用 String(byte[], Charset) 构造函数进行转换。
方法 2:使用 Collections.swap()
此方法涉及使用 getResource() 方法。以下是代码示例 −
示例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class ResourceLoaderExample {
public static void main(String[] args) throws IOException {
ClassLoader classLoader = ResourceLoaderExample.class.getClassLoader();
URL resourceUrl = classLoader.getResource("example.txt");
InputStream inputStream = resourceUrl.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,
StandardCharsets.UTF_8));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
inputStream.close();
}
}
解释
从类路径获取资源的一个有用工具是 getResource() 方法。通过调用此函数。您可以获取资源 URL 并使用 InputStream 和 BufferedReader 顺序读取其内容。请注意,在为此方法提供路径参数时,它必须相对于类路径的根目录 - 就像使用 getResourceAsStream() 一样。
方法之间的比较
方法 |
方法 1 |
方法 2 |
|---|---|---|
类型 |
将文件加载为输入流 |
将文件加载为url |
方法 |
getResourceAsStream() |
getResource() |
方法逻辑 |
getResourceAsStream() 直接返回一个 InputStream。 |
getResource() 返回一个 URL 对象,该对象可用于获取 InputStream 或 URLConnection。 |
结论
总之,Java 中存在多种从 classpath 加载资源的方法 - 例如利用 ClassLoader.getResource() 或 ClassLoader.getResourceAsStream()。随后,确定应用哪种模式取决于个人使用标准和应用程序的各自要求。一旦您获得了指向资源文件的 InputStream 或 URL,您就可以在读取其内容时应用不同的策略;使用 BufferedReader 适用于文本文件。从类路径加载资源是 Java 中的一项常见任务,了解如何正确执行此操作对于开发强大而高效的 Java 应用程序非常重要。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

