java8新特性-java.util包新增了Base64类

java.util下面新增了Base64类

从源码的注释中可以推测,这个类是中国人写的,或者是华裔。有兴趣的同学可以打开源码看。

Base64不用多说了,我们经常会使用base64,将一些包含特殊字符的字符串进行编码,主要是为了在网络中传输的方便。

以前使用base64编码和解码,我们通常会自己写这样一个类或者引入一个第三方的实现。现在,jdk8中添加了一个Base64类,我们再也不需要自己写了。

1.Base64编码器(Encoder)分两种

  • 一个是Base64.Encoder enc = Base64.getEncoder();,这是一个基本的编码器
  • 第二个Base64.Encoder urlEncoderec = Base64.getUrlEncoder();这个urlEncoder,是url和fileName安全的编码器,也就是说,当你要编码的字符串是url或者文件路径的时候,你应该使用这个编码器

对应的,解码器也分两种

  • Base64.Decoder dec = Base64.getDecoder();
  • Base64.Decoder urdc = Base64.getUrlDecoder();

2.使用Encoder

调用Encoder.encode(byte[] src)方法,即可将目标字符串进行编码,这个方法的返回结果也是Byte[]数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* Copyright (c) 2014, http://momotime.me. All rights reserved.
*/
package me.momotime.java8.base64;
import java.net.URL;
import java.util.Base64;
/**
* Base64测试
* @author momo.
*/
public class Base64Test {
public static void main(String args[]) {
try {
URL url = new URL("http://momotime.com");
//编码
Base64.Encoder urlEncoderec = Base64.getUrlEncoder();
byte[] urlBytes = urlEncoderec.encode(url.toString().getBytes("UTF8"));
System.out.println("url编码结果: " + new String(urlBytes, "UTF-8"));
//解码
Base64.Decoder urdc = Base64.getUrlDecoder();
byte[] urdec = urdc.decode(urlBytes);
System.out.println("url编码结果: " + new String(urdec, "UTF-8"));
} catch (Exception e) {
System.out.println("base64异常");
}
}
}