赞
踩
在之前的项目中因为使用了Base64编码,而导入了sun.misc.Base64Encoder这个包,每次在使用maven打包时控制台总输出警告:Base64Encoder这个API将会在未来的版本中移除。查阅资料后发现自Java9开始已经不支持这个API,应使用java.util.Base64这个包代替。具体使用方法如下:
首先导入Base64
import java.util.Base64;
不熟悉怎么使用的话,可以在IDE中Ctrl+鼠标左键进入他的源码,可以找到相关的操作方法,我们重点关注编码和解码这两个函数,可以看到其中提供了getEncdoer()和getDecoder()这两个静态方法供我们使用。
-
- public class Base64 {
-
- ......
- private Base64() {}
-
- public static Encoder getEncoder() {
- return Encoder.RFC4648;
- }
-
-
-
- public static Decoder getDecoder() {
- return Decoder.RFC4648;
- }
-
- ......
-
- }
不难发现,它们的返回值分别是EnCoder和Decoder类型,而我们一般Base64编码后需要的返回值是String类型,同样在返回值上Ctrl+鼠标左键,可以在其内部找到一个encodeToString()方法,另外解码时需要将String类型的Base64编码再次转换为byte数组,可以在Decoder类中找到一个decode()方法,用于解码工作。
- /*
- * Base64编码
- * 用于将传入的byte数组转为String类型
- */
- public String encodeToString(byte[] src) {
- byte[] encoded = encode(src);
- return new String(encoded, 0, 0, encoded.length);
- }
- /*
- * Base64解码
- * 用于将传入的String类型转为byte数组
- */
- public byte[] decode(String src) {
- return decode(src.getBytes(StandardCharsets.ISO_8859_1));
- }
Base64的基本使用
- import java.util.Base64;
- public class StrConvertBase64 {
- public static void main(String[] args) {
- // 字符串转Base64
- String enCodeStr = getBase64EnCoder("哈哈哈哈");
- System.out.println(enCodeStr);
- // Base64转字符串
- String deCodeStr = getBase64DeCoder("uf65/rn+uf4=");
- System.out.println(deCodeStr);
- }
- /**
- * Base64编码
- * @param src
- * @return
- */
- public static String getBase64EnCoder(String str) {
- // 将源字符串转为byte数组
- byte [] strBytes = str.getBytes();
- // 链式调用,返回结果
- return Base64.getEncoder().encodeToString(strBytes);
- }
- /**
- * Base64解码
- * @param src
- * @return
- */
- public static String getBase64DeCoder(String str) {
- // 将Base64编码转为byte数组
- byte [] base64Bytes = Base64.getDecoder().decode(str);
- // 将Byte数组转为String,返回结果
- return new String(base64Bytes);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。