【问题标题】:ByteArrayOutputStream vs. CharBuffer with CharSetByteArrayOutputStream 与 CharBuffer 与 CharSet
【发布时间】:2016-01-31 18:23:10
【问题描述】:

我只是想避免一些大型数组副本(byte[] 数组)。

I have a String of size n
I have a byte[] of size m

我使用 ISO-8859-1 作为字符串。我非常想将String写入到这个数组中的字节[0]到字节[n-1]位置,然后对于字节[],我只需将System.array的字节复制到数组中。

在查看 ByteArrayOutputStream 时,它是同步的,我不需要,查看 byteBuffer.asCharBuffer(),我似乎无法提供我希望始终明确的 CharSet。

以上如何实现?

另外,我刚刚发现 byteBuffer.asCharBuffer 错误地假设每个 char 占用两个字节,而 ascii 或 ISO-8859-1 的情况并非如此,因此 CharBuffer 在这方面效果不佳。

谢谢, 院长

【问题讨论】:

    标签: java nio


    【解决方案1】:

    编写字符串编码的常用方法是CharsetEncoder。我相信它也适合这种情况:

    encoder = StandardCharsets.ISO_8859_1.newEncoder();
    ByteBuffer result = encoder.encode(CharBuffer.wrap(inputString));
    // do whatever you want with result... 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-22
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 2011-06-09
      • 2018-04-21
      相关资源
      最近更新 更多