Java教程
+ -

Java Java8 Base64

2019-09-09 1 0

Java 8中,Base64编码已经成为Java类库的标准。

Java 8 内置了 Base64 编码的编码器和解码器。

Base64工具类提供了一套静态方法获取下面三种BASE64编解码器:

  • 基 本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/。
  • URL :输出映射到一组字符A-Za-z0-9+_,输出是URL和文件。
  • MIME :输出隐射到MIME友好格式。输出每行不超过76字符,并且使用’\r’并跟随’\n’作为分割。编码输出最后没有行分割。

内嵌类

序号 内嵌类 & 描述
1 static class Base64.Decoder该类实现一个解码器用于,使用 Base64 编码来解码字节数据。
2 static class Base64.Encoder该类实现一个编码器,使用 Base64 编码来编码字节数据。

方法

序号 方法名 & 描述
1 static Base64.Decoder getDecoder()返回一个 Base64.Decoder ,解码使用基本型 base64 编码方案。
2 static Base64.Encoder getEncoder()返回一个 Base64.Encoder ,编码使用基本型 base64 编码方案。
3 static Base64.Decoder getMimeDecoder()返回一个 Base64.Decoder ,解码使用 MIME 型 base64 编码方案。
4 static Base64.Encoder getMimeEncoder()返回一个 Base64.Encoder ,编码使用 MIME 型 base64 编码方案。
5 static Base64.Encoder getMimeEncoder(int lineLength, byte[]lineSeparator)返回一个 Base64.Encoder ,编码使用 MIME 型 base64 编码方案,可以通过参数指定每行的长度及行的分隔符。
6 static Base64.Decoder getUrlDecoder()返回一个 Base64.Decoder ,解码使用 URL 和文件名安全型 base64 编码方案。
7 static Base64.Encoder getUrlEncoder()返回一个 Base64.Encoder ,编码使用 URL 和文件名安全型 base64 编码方案。

注 意:Base64 类的很多方法从 java.lang.Object 类继承。

Base64 实例

以下实例演示了 Base64 的使用:

Java8Tester.java 文件

import java.util.Base64;
import java.util.UUID;
import java.io.UnsupportedEncodingException;
public class Java8Tester {
   public static void main(String args[]){
      try {
         // 使用基本编码
         String base64encodedString = Base64.getEncoder().encodeToString("bytekits?java8".getBytes("utf-8"));
         System.out.println("Base64 编码字符串 (基本) :" + base64encodedString);
         // 解码
         byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
         System.out.println("原始字符串: " + new String(base64decodedBytes, "utf-8"));
         base64encodedString = Base64.getUrlEncoder().encodeToString("TutorialsPoint?java8".getBytes("utf-8"));
         System.out.println("Base64 编码字符串 (URL) :" + base64encodedString);
         StringBuilder stringBuilder = new StringBuilder();
         for (int i = 0; i < 10; ++i) {
            stringBuilder.append(UUID.randomUUID().toString());
         }
         byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
         String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);
         System.out.println("Base64 编码字符串 (MIME) :" + mimeEncodedString);
      }catch(UnsupportedEncodingException e){
         System.out.println("Error :" + e.getMessage());
      }
   }
}

执行以上脚本,输出结果为:

Base64 编码字符串 (基本) :Ynl0ZWtpdHM/amF2YTg=
原始字符串: bytekits?java8
Base64 编码字符串 (URL) :VHV0b3JpYWxzUG9pbnQ_amF2YTg=
Base64 编码字符串 (MIME) :YmM0ZmM3MzAtZWQ1My00MzZhLWE4N2QtOGZmMmVhMjA4MGY4NmE4MTIxZjgtMThiMC00ZWNjLTgz
MjUtYWQ3MDAyMjE4YjcwYzFjYjM4ODEtYzBmMy00N2JiLWI0NWItMGY0NmFhNzE3Y2E4NWUxYWU2
MDgtMWU3OS00ZTRkLThkOWQtZjhjNzkxNzI5Y2MyZWZjMzAxMWQtZWNkNi00NjJkLThjNTUtOWQx
ZDdmMmEwM2IzNDgxY2E3YmEtZTgzNi00MmNiLTg1OGQtMTdjODg3NTE4NWU3YWJmM2IzNjYtNmNi
ZC00NGE2LWI5ODMtZTBmZGQzMzVkOTA5ZTYwNjNhYjYtNGMyZS00Y2U5LThkMzItN2EyZDkyMTA2
YTA5ZWQ0OTYwMWMtNjcxZi00NWU2LTk3ODAtMDQwNGY2OThiZTAwNTE5ODM5OTItMzI1NS00YzEx
LWJmNDctOGM3NGMyMTdkNmE0

0 篇笔记 写笔记

Java Java8 Base64
在Java 8中,Base64编码已经成为Java类库的标准。Java 8 内置了 Base64 编码编码器和解码器。Base64工具类提供了一套静态方法获取下面三种BASE64编解码器:基 本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/......
Ruby 中文编码
前面章节中我们已经学会了如何用 Ruby 输出 “Hello,World!”,英文没有问题,但是如果你输出中文字符”你好,世界”就有可能会碰到中文编码问题。Ruby 文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/ruby -wputs "你好,世界!";以上程......
C++ 存储类
存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类:autoregisterstaticexternmutablethread_local (C++11)从 C++ 11 开始,auto 关键字不再是 C++ 存......
C# 多线程
1647线 程被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。线程是 轻 量级进程。一个使用线程的常见实例是现代操作系统中并行编程的实现。使用线程节省了 CPU 周期的浪费,同时提......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!