数据类型转换器与 Base64

abh*_*314 10 java base64 java-8

我目前正在做一个需要 64 位解码的项目,经过一些研究,我在 java 本身中发现了这两种方法,

来自JAVA 8

import java.util.Base64;

byte[] decodedBytes = Base64.getDecoder().decode("encodedUserPassword");
Run Code Online (Sandbox Code Playgroud)

JAVA 6

import javax.xml.bind.DatatypeConverter;

byte[] decodedBytes = DatatypeConverter.parseBase64Binary("encodedUserPassword");
Run Code Online (Sandbox Code Playgroud)

我想知道的是为什么需要Base64ifDatatypeConverter已经存在?

有不同的表现吗?

Dan*_*dra 10

整个javax.xml.bind模块在Java9 https://docs.oracle.com/javase/9​​/docs/api/java.xml.bind-summary.html已弃用(甚至删除)

如果您的项目从 Java8 开始使用,请停止使用该包并使用 Java8 的 Base64 类,以便将来的 Java 升级不会影响它们。

另一方面,如果您必须保持与 Java7 或更早版本的兼容性,则不能使用 Base64(因为它是在 Java8 上引入的)。为此,您应该继续使用 DatatypeConverter 或者更好的另一个独立库来编码/解码 base 64(例如Apache Commons 64