一、概述
Base64 是一种文本编码方案,可为应用程序和平台之间的二进制数据提供可移植性。 Base64 可用于将二进制数据存储在数据库字符串列中,从而避免混乱的文件操作。 当与数据 URI 方案结合使用时,Base64 可用于在网页和电子邮件中嵌入图像,符合 HTML 和多用途 Internet 邮件扩展 (MIME) 标准。
在这个简短的教程中,我们将演示 Java Streaming IO 函数和内置 Java 类,以将二进制数据作为InputStream
加载,然后将其转换为String
。Base64
2. 设置
让我们看看代码所需的依赖项和测试数据。
2.1。 依赖项
我们将使用Apache IOUtils库通过将其依赖项添加到我们的来方便地访问测试数据文件:pom.xml
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
2.2.测试数据
这里需要一个二进制测试数据文件。 所以我们将在我们的标准文件夹中添加一个图像文件。src/test/resources
logo.png
3. 将转换为 Base64 字符串InputStream
Java 在java.util.Base64
类中内置了对 Base64 编码和解码的支持。 所以我们将从那里使用static
方法来完成繁重的工作。
Base64.encode()
方法需要一个数组,我们的图像在一个文件中。 因此,我们需要先将文件转换为 ,然后将流逐字节读取到数组中。byte
InputStream
我们使用Apache包中的方法作为替代冗长的纯 Java 方法的便捷替代方法。commons-io
IOUtils.toByteArray()
首先,我们将编写一个简单的方法来生成“穷人”校验和:
int calculateChecksum(byte[] bytes) {
int checksum = 0;
for (int index = 0; index < bytes.length; index++) {
checksum += bytes[index];
}
return checksum;
}
我们将使用它来比较两个数组,验证它们是否匹配。
下一行打开文档,将其转换为字节数组,然后 Base64 将其编码为 :String
InputStream sourceStream = getClass().getClassLoader().getResourceAsStream("logo.png");
byte[] sourceBytes = IOUtils.toByteArray(sourceStream);
String encodedString = Base64.getEncoder().encodeToString(sourceBytes);
assertNotNull(encodedString);
字符串看起来像一个随机字符块。 事实上,它不是随机的,正如我们在验证步骤中看到的那样:
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
assertNotNull(decodedBytes);
assertTrue(decodedBytes.length == sourceBytes.length);
assertTrue(calculateChecksum(decodedBytes) == calculateChecksum(sourceBytes));
4。 结论
在本文中,我们演示了将编码为 Base64 字符串以及将该字符串成功解码回二进制数组。InputStream
0 评论