在Java中,我们发现类Base64
和BASE64Encoder
都可以通过
Base64.getEncoder.encodeToString(someByteArray);
和分别:
new BASE64Encoder().encode(someByteArray);
我正在尝试base64编码一个图像文件,它将返回一个相对较大的字符串(6k-7k字符长base64)
是否存在使用一个高于另一个的任何惯例,任何性能差异或其他原因使用一个高于另一个?
答案 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类原来是一个隐藏的宝石!