Получить размер строки с кодировкой в байтах без преобразования в байт []

У меня есть ситуация, когда мне нужно знать размерString/ кодирование, в байтах, но не может использоватьgetBytes() метод, потому что 1)String очень большой и дублируетString вbyte[] массив будет использовать большой объем памяти, но ближе к пункту 2)getBytes() выделяетbyte[] массив на основе длиныString * максимально возможные байты на символ. Так что если у меня естьString с 1.5B символами и кодировкой UTF-16,getBytes() попытается выделить массив из 3 ГБ и потерпит неудачу, поскольку массивы ограничены 2 ^ 32 - X байтами (X зависит от версии Java).

Итак, есть ли способ рассчитать размер байтаString/ кодирующая пара непосредственно изString объект?

ОБНОВИТЬ:

Вот's рабочая реализация 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;
    }
}

Ответы на вопрос(4)

Ваш ответ на вопрос