使用CharSet

时间:2016-01-31 18:23:11

标签: java nio

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

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

我正在使用ISO-8859-1作为字符串。我非常希望将String写入byte [0]到此数组中的byte [n-1]位置,然后对于byte [],我将System.arrayCopy中的字节写入数组。

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

如何实现上述目标?

另外,我刚发现byteBuffer.asCharBuffer错误地认为每个字符占用两个字节,而不是ascii或ISO-8859-1的情况,所以CharBuffer在这方面效果不佳。

感谢, 迪安

1 个答案:

答案 0 :(得分:2)

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

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