我需要将一串字节转换为一行UTF-8字符。唯一对我来说很重要的角色是最后一个角色。这种转换应该在一个周期中进行,所以性能非常重要。一个简单的和低效的做法是:如何将字节流转换为UTF-8字符?
public class Foo {
private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
void next(byte input) {
this.buffer.write(input);
String text = this.buffer.toString("UTF-8"); // this is time consuming
if (text.charAt(text.length() - 1) == THE_CHAR_WE_ARE_WAITING_FOR) {
System.out.println("hurray!");
this.buffer.reset();
}
}
}
字节数组转换为字符串发生在每一个输入字节,这一点,在我的理解,非常无效。是否有可能以某种方式来保留从前一个周期的字节到文本转换的结果?
我在这里错过了一些东西。当UTF-8文本每个字符使用多个字节时,如何转换单个字节? –
这就是为什么我需要执行此转换作业的'ByteArrayOutputStream' – yegor256
为什么不使用InputStreamReader? – Clyde