资源工具 - ResourceUtil
# 资源工具 - ResourceUtil
简介
ResourceUtil
是 Hutool 提供的一个方便的资源读取工具类。它封装了从文件系统和类路径中读取资源的常用方法,使得开发者可以更快捷地读取文本文件、配置文件等资源。无论资源是在类路径下还是在文件系统的绝对路径下,ResourceUtil
都能轻松应对。
# 1. 读取资源为字符串
ResourceUtil
提供了 readUtf8Str
方法,用于将指定路径下的资源文件内容读取为 UTF-8 编码的字符串。该方法会自动根据路径判断资源是位于类路径下还是文件系统中。
# 示例:读取类路径下的资源文件
假设 test.xml
位于 classpath
根目录下,使用 ResourceUtil
读取该文件内容:
import cn.hutool.core.io.resource.ResourceUtil;
public class ResourceUtilExample {
public static void main(String[] args) {
// 读取类路径下的资源文件内容,返回 UTF-8 编码的字符串
String content = ResourceUtil.readUtf8Str("test.xml");
// 输出文件内容
System.out.println("文件内容为:\n" + content);
}
}
2
3
4
5
6
7
8
9
10
11
readUtf8Str(String resource)
:读取指定路径的资源文件内容为 UTF-8 编码的字符串。resource
:资源文件的路径,如果是类路径下的资源,则直接写文件名或相对路径即可。- 返回值:资源文件的内容,UTF-8 编码的字符串。
作用: 用于快速读取类路径或文件系统中的资源文件内容,并返回字符串。
实际开发场景: 在读取配置文件、模板文件等文本资源时,可以使用该方法快速获取文件内容。
# 示例:读取文件系统中的资源文件
假设文件存放在 src/resources/config/test.xml
目录下,使用 ResourceUtil
读取该文件内容:
import cn.hutool.core.io.resource.ResourceUtil;
public class ResourceUtilExample {
public static void main(String[] args) {
// 读取文件系统中的资源文件内容,返回 UTF-8 编码的字符串
String content = ResourceUtil.readUtf8Str("config/test.xml");
// 输出文件内容
System.out.println("文件内容为:\n" + content);
}
}
2
3
4
5
6
7
8
9
10
11
当资源文件位于文件系统中时,直接指定文件路径即可,
ResourceUtil
会自动判断并读取内容。作用: 同样用于快速读取文件系统中的资源文件内容,并返回字符串。
实际开发场景: 在读取配置文件或其他存放在项目外部的资源文件时,该方法非常有用。
# 2. 读取资源为字节数组
ResourceUtil
还提供了 readBytes
方法,用于将资源文件的内容读取为字节数组。该方法非常适合处理二进制文件或需要直接获取文件字节数据的场景。
# 示例:读取资源文件为字节数组
import cn.hutool.core.io.resource.ResourceUtil;
public class ResourceUtilExample {
public static void main(String[] args) {
// 读取类路径下的资源文件内容,返回字节数组
byte[] content = ResourceUtil.readBytes("test.xml");
// 输出字节数组的长度
System.out.println("文件字节长度为:" + content.length);
}
}
2
3
4
5
6
7
8
9
10
11
readBytes(String resource)
:读取指定路径的资源文件内容为字节数组。resource
:资源文件的路径。- 返回值:资源文件的内容,字节数组。
作用: 用于读取二进制资源文件或需要直接获取文件字节数据的场景。
实际开发场景: 在处理图片、音频、视频等二进制文件时,可以使用该方法获取文件的字节数据。
# 3. 获取资源对象
getResourceObj
是 ResourceUtil
的核心方法之一,用于获取指定路径对应的资源对象。根据传入路径是否为绝对路径,返回不同的资源对象实现。
# 示例:获取资源对象
import cn.hutool.core.io.resource.Resource;
import cn.hutool.core.io.resource.ResourceUtil;
public class ResourceUtilExample {
public static void main(String[] args) {
// 获取资源对象,返回具体的 Resource 实现类
Resource resource = ResourceUtil.getResourceObj("test.xml");
// 输出资源的 URL
System.out.println("资源 URL 为:" + resource.getUrl());
}
}
2
3
4
5
6
7
8
9
10
11
12
getResourceObj(String resource)
:根据路径返回对应的资源对象。resource
:资源文件的路径,可以是类路径中的相对路径或文件系统中的绝对路径。- 返回值:资源对象,具体类型根据路径而定。
作用: 用于获取资源文件的抽象表示,适合在需要对资源文件进行进一步操作时使用。
实际开发场景: 当需要获取资源文件的 URL 或进行更复杂的文件操作时,可以先获取资源对象。
# 4. 注意事项
- 在使用
ResourceUtil
读取类路径下的资源文件时,请确保文件已经被正确地编译并复制到target
目录下。 - 如果在 IDEA 中添加了新的资源文件,请重新构建项目,以确保资源文件能够被正确读取。
总结
ResourceUtil
工具类在资源文件的读取和处理方面非常方便,特别适合需要频繁读取配置文件、模板文件等资源的开发场景。它提供了简洁易用的 API,使得开发者能够更加专注于业务逻辑的实现,同时避免了手动处理资源路径的麻烦。