使用 Java 8+ 内置的 java.util.Base64 (推荐)
这是目前最标准、最推荐的方法,无需引入任何外部库。

java.util.Base64 类提供了 getDecoder() 方法来获取一个 Base64.Decoder 实例,然后调用它的 decode() 方法即可。
标准解码
这是最常见的用法,适用于标准的 Base64 编码。
代码示例:
import java.util.Base64;
public class Base64ToByteExample {
public static void main(String[] args) {
// 1. 准备一个 Base64 编码的字符串
// 字符串 "Hello, World!" 的 Base64 编码结果
String base64String = "SGVsbG8sIFdvcmxkIQ==";
try {
// 2. 获取 Base64.Decoder 实例
Base64.Decoder decoder = Base64.getDecoder();
// 3. 调用 decode() 方法进行解码
byte[] decodedBytes = decoder.decode(base64String);
// 4. 打印结果
System.out.println("原始 Base64 字符串: " + base64String);
System.out.println("解码后的 byte[] 数组长度: " + decodedBytes.length);
// 将 byte[] 数组转换回字符串以验证结果
String originalString = new String(decodedBytes);
System.out.println("解码后恢复的字符串: " + originalString);
} catch (IllegalArgumentException e) {
System.err.println("错误:输入的字符串不是有效的 Base64 格式!");
e.printStackTrace();
}
}
}
输出:

原始 Base64 字符串: SGVsbG8sIFdvcmxkIQ==
解码后的 byte[] 数组长度: 13
解码后恢复的字符串: Hello, World!
URL 安全解码
Base64 编码中可能包含 和 这两个字符,它们在 URL 中有特殊含义,可能会导致问题,URL 安全的 Base64 编码会用 和 _ 替换这两个字符。
Java 的 Base64 类也提供了专门的解码器来处理这种情况。
代码示例:
import java.util.Base64;
public class Base64UrlToByteExample {
public static void main(String[] args) {
// URL 安全的 Base64 编码字符串
// 字符串 "Hello, World!" 的 URL 安全 Base64 编码结果
String base64UrlString = "SGVsbG8sIFdvcmxkIQ";
try {
// 获取 URL 安全的 Base64.Decoder 实例
Base64.Decoder decoder = Base64.getUrlDecoder();
// 进行解码
byte[] decodedBytes = decoder.decode(base64UrlString);
// 打印结果
System.out.println("原始 URL 安全 Base64 字符串: " + base64UrlString);
String originalString = new String(decodedBytes);
System.out.println("解码后恢复的字符串: " + originalString);
} catch (IllegalArgumentException e) {
System.err.println("错误:输入的字符串不是有效的 URL 安全 Base64 格式!");
e.printStackTrace();
}
}
}
输出:

原始 URL 安全 Base64 字符串: SGVsbG8sIFdvcmxkIQ
解码后恢复的字符串: Hello, World!
使用 Apache Commons Codec 库
如果你的项目已经使用了 Apache Commons 库,或者你习惯使用它,org.apache.commons.codec.binary.Base64 也是一个非常好的选择。
你需要添加依赖。
Maven 依赖
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version> <!-- 请使用最新版本 -->
</dependency>
Gradle 依赖
implementation 'commons-codec:commons-codec:1.15' // 请使用最新版本
代码示例
import org.apache.commons.codec.binary.Base64;
public class CommonsCodecExample {
public static void main(String[] args) {
// 1. 准备一个 Base64 编码的字符串
String base64String = "SGVsbG8sIFdvcmxkIQ==";
try {
// 2. 直接调用 Base64.decodeBase64() 方法进行解码
// 这个方法内部会处理解码器实例的创建
byte[] decodedBytes = Base64.decodeBase64(base64String);
// 3. 打印结果
System.out.println("原始 Base64 字符串: " + base64String);
System.out.println("解码后的 byte[] 数组长度: " + decodedBytes.length);
String originalString = new String(decodedBytes);
System.out.println("解码后恢复的字符串: " + originalString);
} catch (Exception e) {
System.err.println("错误:解码失败!");
e.printStackTrace();
}
}
}
输出结果与 Java 8 的标准解码示例完全相同。
总结与对比
| 特性 | Java 8+ java.util.Base64 |
Apache Commons Codec org.apache.commons.codec.binary.Base64 |
|---|---|---|
| 依赖 | 无需任何外部依赖,JDK 自带 | 需要添加 commons-codec 库依赖 |
| 易用性 | 需要先获取 Decoder 实例,再调用 decode() |
更简洁,可以直接调用静态方法 Base64.decodeBase64() |
| 功能 | 提供标准、URL安全、MIME友好的多种编解码器 | 功能非常全面,除了标准Base64,还支持Base32、Base16等 |
| 推荐度 | 强烈推荐,对于新项目,这是首选。 | 如果项目已使用该库,或者需要更复杂的编解码功能,是很好的选择。 |
对于绝大多数 Java 开发场景,优先使用 Java 8 内置的 java.util.Base64,它更轻量,是标准 API,无需管理额外的依赖,只有在特殊需求或已有项目规范下,才考虑使用 Apache Commons Codec。
