一、Base64 字符串的概述
在计算机领域中,base64 是一种用64个字符来表示任意二进制数据的方法。因为一些系统只支持纯文本,如电子邮件等,但二进制数据又包括很多无法打印的字符,所以为了在这些系统中也能处理二进制数据,就将二进制数据转成了可打印的字符,这就是 Base64 编码。Base64 常用于在网络上传输文件,图片等二进制数据。
java.util.Base64 是 Java 8 提供的一个用于处理 Base64 的工具类,可以进行编码和解码操作。在 Java 中常用的有两种 Base64 编码方式:基本编码和 URL 编码。基本编码是最常用的一种,它用字符“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”来表示二进制数据。而 URL 编码是一种简化版的编码,具有适合放入 URL 和其他文本传输介质中的特点,其替换字符为“-”和“_”。
二、使用 java.util.Base64 进行 Base64 编码和解码操作
现在我们来看看如何使用 java.util.Base64 进行 Base64 编码和解码操作。下面是基本编码的示例代码:
import java.util.Base64; public class Base64Example { public static void main(String[] args) { // 编码操作 String s = "Base64 编码示例"; byte[] b = s.getBytes(); String encodedString = Base64.getEncoder().encodeToString(b); System.out.println("Base64 编码:" + encodedString); // 解码操作 byte[] decodedBytes = Base64.getDecoder().decode(encodedString); String decodedString = new String(decodedBytes); System.out.println("Base64 解码:" + decodedString); } }
执行上面的代码,输出应该为:
Base64 编码:QmFzZTY0IOe8l+aWkumZp+WuieWFsOeahOWNoO+8pOWxiw== Base64 解码:Base64 编码示例
同样的,我们也可以使用 URL 编码进行编码操作。示例代码如下:
// URL 编码操作 String s = "Base64 编码示例"; byte[] b = s.getBytes(); String encodedString = Base64.getUrlEncoder().encodeToString(b); System.out.println("URL 编码:" + encodedString);
执行上面的代码,输出应该为:
URL 编码:QmFzZTY0IOe8l-aWkumZp-WuieWFsOeahOWNoO-8pOWxiw==
三、Base64 编码在 Java Web 开发中的应用
在 Java Web 开发中,Base64 编码也非常常用。比如,在发送邮件时,需要将报表或图片等二进制数据转成 Base64 编码,并将其作为邮件的附件进行发送。Base64 编码在前端也非常常用,比如在前端上传图片时,一般需要将图片转成 Base64 编码,并将其放入数据中进行传输。
下面是一个将图片转成 Base64 编码的示例代码:
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Base64; public class ImageToBase64Example { public static void main(String[] args) throws IOException { String imagePath = "C:/test.jpg"; File file = new File(imagePath); InputStream inputStream = new FileInputStream(file); byte[] bytes = new byte[(int)file.length()]; inputStream.read(bytes); String encodedImage = Base64.getEncoder().encodeToString(bytes); System.out.println("图片 Base64 编码:" + encodedImage); } }
执行上面的代码,输出应该为:
图片 Base64 编码:/9j/4AAQSkZJRgABAQEASABIAAD...
四、小结
Base64 是一种将二进制数据转成可打印的字符的编码方式,常用于网络数据传输等。在 Java 8 中,可以使用 java.util.Base64 进行 Base64 的编码和解码操作,支持基本编码和 URL 编码。在 Java Web 开发中,Base64 编码也非常常用,比如将二进制数据作为邮件附件发送,或者将图片转成 Base64 编码进行传输等。