我应该使用 new BASE64Encoder() 还是 Base64.getEncoder() 在 java 中编码图像?

Age*_*ntM 2 java base64 image

在 Java 中,我们找到两个类Base64BASE64Encoder通过以下方式对字节执行 base64 编码

Base64.getEncoder.encodeToString(someByteArray);

和分别:

new BASE64Encoder().encode(someByteArray);

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

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

Mar*_*vin 5

使用Base64.getEncoder(). 该sun包(其中sun.misc.BASE64Encoder居住)不受支持,不提倡这样用。

请参阅为什么开发人员不应编写调用“sun”包的程序

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

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

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

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

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