您的位置:

Java工程师处理Base64字符串

一、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 编码进行传输等。