无涯教程-Java8 - base64编码

31 阅读3分钟

在Java 8中,Base64编码已经成为Java类库的标准。Java8现在有用于Base64编码的内置编码器和解码器。在Java8中,无涯教程可以使用三种类型的base64编码。

  • Simple     - 输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/。

  • URL         - 输出映射到一组字符A-Za-z0-9+_,输出是URL和文件。

  • MIME     - 输出隐射到MIME友好格式。输出每行不超过76字符,并且使用 并跟随 作为分割。编码输出最后没有行分割。

Base64 类

Sr.No. Nested class & Remark
1

static class Base64.Decoder

此类实现了一个解码器,用于使用RFC 4648和RFC 2045中指定的Base64编码方案对字节数据进行解码。

2

static class Base64.Encoder

此类实现了一个编码器,用于使用RFC 4648和RFC 2045中指定的Base64编码方案对字节数据进行编码。

Base64 方法

Sr.No. Method Name & Remark
1

static Base64.Decoder getDecoder()

返回使用基本类型Base64编码方案进行解码的Base64解码器。

2

static Base64.Encoder getEncoder()

返回使用基本类型Base64编码方案进行编码的Base64编码器。

3

static Base64.Decoder getMimeDecoder()

返回使用MIME类型Base64解码方案进行解码的Base64解码器。

4

static Base64.Encoder getMimeEncoder()

返回使用MIME类型Base64编码方案进行编码的Base64编码器。

5

static Base64.Encoder getMimeEncoder(int lineLength,byte[]lineSeparator)

返回Base64编码器,该编码器使用具有指定行长和行分隔符的MIME类型Base64编码方案进行编码。

6

static Base64.Decoder getUrlDecoder()

返回一个Base64解码器,该解码器使用URL和文件名安全类型Base64编码方案进行解码。

7

static Base64.Encoder getUrlEncoder()

返回Base64编码器,该编码器使用URL和文件名安全类型Base64编码方案进行编码。

base64 示例

使用您在C:/>Java中选择的任何编辑器创建以下Java程序。

Java8Tester.java

import java.util.Base64;
import java.util.UUID;
import java.io.UnsupportedEncodingException;

public class HelloWorld {

public static void main(String args[]) {

  </span><span class="kwd">try</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
	
     </span><span class="com">//编码使用基本编码器</span><span class="pln">
     </span><span class="typ">String</span><span class="pln"> base64encodedString</span><span class="pun">=</span><span class="typ">Base64</span><span class="pun">.</span><span class="pln">getEncoder</span><span class="pun">().</span><span class="pln">encodeToString</span><span class="pun">(</span><span class="pln">
        </span><span class="str">"LearnFk?java8"</span><span class="pun">.</span><span class="pln">getBytes</span><span class="pun">(</span><span class="str">"utf-8"</span><span class="pun">));</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Base64 Encoded String (Basic) :"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> base64encodedString</span><span class="pun">);</span><span class="pln">
	
     </span><span class="com">//解码</span><span class="pln">
     </span><span class="kwd">byte</span><span class="pun">[]</span><span class="pln"> base64decodedBytes</span><span class="pun">=</span><span class="typ">Base64</span><span class="pun">.</span><span class="pln">getDecoder</span><span class="pun">().</span><span class="pln">decode</span><span class="pun">(</span><span class="pln">base64encodedString</span><span class="pun">);</span><span class="pln">
	
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Original String: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">String</span><span class="pun">(</span><span class="pln">base64decodedBytes</span><span class="pun">,</span><span class="pln"> </span><span class="str">"utf-8"</span><span class="pun">));</span><span class="pln">
     base64encodedString</span><span class="pun">=</span><span class="typ">Base64</span><span class="pun">.</span><span class="pln">getUrlEncoder</span><span class="pun">().</span><span class="pln">encodeToString</span><span class="pun">(</span><span class="pln">
        </span><span class="str">"LearnFk?java8"</span><span class="pun">.</span><span class="pln">getBytes</span><span class="pun">(</span><span class="str">"utf-8"</span><span class="pun">));</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Base64 Encoded String (URL) :"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> base64encodedString</span><span class="pun">);</span><span class="pln">
	
     </span><span class="typ">StringBuilder</span><span class="pln"> stringBuilder</span><span class="pun">=</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">StringBuilder</span><span class="pun">();</span><span class="pln">
	
     </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln"> </span><span class="pun">++</span><span class="pln">i</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        stringBuilder</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="pln">UUID</span><span class="pun">.</span><span class="pln">randomUUID</span><span class="pun">().</span><span class="pln">toString</span><span class="pun">());</span><span class="pln">
     </span><span class="pun">}</span><span class="pln">
	
     </span><span class="kwd">byte</span><span class="pun">[]</span><span class="pln"> mimeBytes</span><span class="pun">=</span><span class="pln">stringBuilder</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">().</span><span class="pln">getBytes</span><span class="pun">(</span><span class="str">"utf-8"</span><span class="pun">);</span><span class="pln">
     </span><span class="typ">String</span><span class="pln"> mimeEncodedString</span><span class="pun">=</span><span class="typ">Base64</span><span class="pun">.</span><span class="pln">getMimeEncoder</span><span class="pun">().</span><span class="pln">encodeToString</span><span class="pun">(</span><span class="pln">mimeBytes</span><span class="pun">);</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Base64 Encoded String (MIME) :"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> mimeEncodedString</span><span class="pun">);</span><span class="pln">

  </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pun">(</span><span class="typ">UnsupportedEncodingException</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Error :"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">getMessage</span><span class="pun">());</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

} }

使用javac编译器编译类,如下所示-

C:\JAVA>javac Java8Tester.java

现在运行Java8Tester,如下所示-

C:\JAVA>java Java8Tester

它应该生成以下输出-

Base64 Encoded String (Basic) :VHV0b3JpYWxzUG9pbnQ/amF2YTg=
Original String: LearnFk?java8
Base64 Encoded String (URL) :VHV0b3JpYWxzUG9pbnQ_amF2YTg=
Base64 Encoded String (MIME) :YmU3NWY2ODktNGM5YS00ODlmLWI2MTUtZTVkOTk2YzQ1Njk1Y2EwZTg2OTEtMmRiZC00YTQ1LWJl
NTctMTI1MWUwMTk0ZWQyNDE0NDAwYjgtYTYxOS00NDY5LTllYTctNjc1YzE3YWJhZTk1MTQ2MDQz
NDItOTAyOC00ZWI0LThlOTYtZWU5YzcwNWQyYzVhMTQxMWRjYTMtY2MwNi00MzU0LTg0MTgtNGQ1
MDkwYjdiMzg2ZTY0OWU5MmUtZmNkYS00YWEwLTg0MjQtYThiOTQxNDQ2YzhhNTVhYWExZjItNjU2
Mi00YmM4LTk2ZGYtMDE4YmY5ZDZhMjkwMzM3MWUzNDMtMmQ3MS00MDczLWI0Y2UtMTQxODE0MGU5
YjdmYTVlODUxYzItN2NmOS00N2UyLWIyODQtMThlMWVkYTY4M2Q1YjE3YTMyYmItZjllMS00MTFk
LWJiM2UtM2JhYzUxYzI5OWI4

参考链接

www.learnfk.com/java/java8-…