IOUtils.toByteArray已被弃用 - 我们可以使用什么替代品?

3

我正在开发一个 spring boot 应用,并需要使用 IOUtils 提供的 toByteArray 方法,但它已被弃用。在 spring boot 应用中,是否可以安全地使用 string.getBytes() 方法,或者还有其他方法可以从文本内容中获取字节?


1
API文档已经完整,其中包含了应该使用的方法来替代已弃用的方法。您可以信任API文档。 - Torben
只是补充一下@Torben的评论,从文档中可以看到:使用IOUtils.toByteArray(Reader, Charset)代替。https://commons.apache.org/proper/commons-io/javadocs/api-2.5/deprecated-list.html - Sam
2个回答

3

最好使用以下方法:

string.getBytes("UTF-8");

最好指定编码,否则可能会使用默认的平台特定编码,如果您有无法在默认编码中表示的字符(如阿拉伯语/中文/印地语字符),则可能会创建意外结果。

UTF-8是最好的、紧凑的编码之一,覆盖了其他语言和表情符号中的数百万个字符。


1

它是等效的,有两个原因:

  • 他们在javadoc中声称它
  • 如果您查看实施:

    /** @deprecated */
    @Deprecated
    public static byte[] toByteArray(String input) throws IOException {
        return input.getBytes();
    }
    

getBytes() 实际上是被调用的。

但这并不是 安全 的,因为它假设您想要使用平台默认字符集中的字节。您应该始终指定一个字符集。


它是“安全的”,也就是说,“它不会崩溃”。但是,如果您希望它在任何基础操作系统/JVM/环境变量下都能保持一致的行为,则它并不是“安全的”。如果您想要可预测性和一致性,那么任何字符串/字符到字节的转换都应该指定编码。 - GPI
@GPI 正确。将措辞改为“等效”。 - Benoit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接