在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"><</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