我应该使用新的BASE64Encoder()或Base64.getEncoder()来编码java中的图像吗?

时间:2018-01-16 19:57:31

标签: java image base64

在Java中,我们发现类Base64BASE64Encoder都可以通过

对字节执行base64编码

Base64.getEncoder.encodeToString(someByteArray);

和分别:

new BASE64Encoder().encode(someByteArray);

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

是否存在使用一个高于另一个的任何惯例,任何性能差异或其他原因使用一个高于另一个?

1 个答案:

答案 0 :(得分:3)

使用Base64.getEncoder()sun个软件包(sun.misc.BASE64Encoder所在的软件包)不受支持,不鼓励使用它们。

请参阅Why Developers Should Not Write Programs that Call 'sun' Packages

  

sun。*包不是受支持的公共界面的一部分。

     

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

Eclipse可能已经向您显示Access restriction错误以及这些包中的大多数类won't be accessible from Java 9 on

Performance-wise it also seems advisable to use the new implementation,虽然我自己没有做过任何测试:

  

表格中的一切都很明显:sun.misc类令人震惊的表现,Commons Codec类的可接受性能以及iharder.net和MiG Base64实现的非常好的表现。新的Java 8编码器/解码器运行速度比任何其他实现都快(但您需要Java 8 ...)。 javax.xml类原来是一个隐藏的宝石!