获取字符串的大小,以字节为单位进行编码,而不转换为 byte[]
我有一个情况,我需要知道/encoding对的大小,以字节为单位,但不能使用该方法,因为1)非常大,在数组中复制会使用大量的内存,但更多的是点2)根据*的长度分配数组每个字符的最大可能字节数。所以如果我有一个1.5B字符和UTF-16编码,会尝试分配一个3GB的数组并失败,因为数组被限制为2 ^ 32 - X字节(X是Java版本特定的)。String
getBytes()
String
String
byte[]
getBytes()
byte[]
String
String
getBytes()
那么 - 有没有办法直接从对象计算/编码对的字节大小?String
String
更新:
以下是jtahlborn答案的工作实现:
private class CountingOutputStream extends OutputStream {
int total;
@Override
public void write(int i) {
throw new RuntimeException("don't use");
}
@Override
public void write(byte[] b) {
total += b.length;
}
@Override public void write(byte[] b, int offset, int len) {
total += len;
}
}