我应该使用新的 BASE64Encoder() 还是 Base64.getEncoder() 在 java 中对图像进行



在Java中,我们发现两个类Base64BASE64Encoder都通过对字节执行base64编码

Base64.getEncoder.encodeToString(someByteArray);

以及分别:

new BASE64Encoder().encode(someByteArray);

我正在尝试对图像文件进行base64编码,这将返回一个相对较大的字符串(6k-7k字符长base64)

使用一个高于另一个是否有任何约定,是否有任何性能差异或其他原因使用一个高于另一个?

使用Base64.getEncoder().sun包(sun.misc.BASE64Encoder所在的位置)不受支持,不建议使用它们。

了解为什么开发人员不应该编写调用"sun"包的程序:

sun.* 软件包不是受支持的公共接口的一部分。

直接调用 sun.* 包的 Java 程序不能保证在所有与 Java 兼容的平台上都能运行。实际上,即使在同一平台上的未来版本中,也不能保证这样的程序可以正常工作。

Eclipse 可能已经向您显示Access restriction错误,并且这些包中的大多数类将无法从 Java 9 开始访问。

在性能方面,使用新的实现似乎也是可取的,尽管我自己没有做过任何测试:

从表中可以明显看出一切:sun.misc 类的惊人性能、Commons 编解码器类的可接受性能以及 iharder.net 和 MiG Base64 实现的出色性能。新的Java 8编码器/解码器的运行速度比任何其他实现都快(但你需要Java 8...)。Javax.xml类原来是一个隐藏的宝石!

最新更新