Я хочу написать CharSequence для OutputStream с помощью указанного CharSet. В принципе, сценарий, инициализированный тем же CharSet, будет делать, когда вызывается запись (String).Как закодировать CharSequence с помощью CharSet (без преобразования в String)
Улов есть, есть много CharSequences, которые должны быть написаны, а некоторые довольно большие. Чтобы усложнить ситуацию, все может быть записано в несколько продуктов OutputStream. Я могу легко осуществить, что при использовании (на самом деле я в настоящее время реализовал это таким образом):
byte[] rawBytes = CharSequence.toString().getBytes(CharSet)
for (OutputStream out : outputTargets) {
out.write(rawBytes);
}
Но очевидно, что строка является полностью нежелательным объектом мусора здесь, как байты [] массив. Я ищу метод, который позволяет мне делать кодирование напрямую без промежуточных объектов. Удивительно, но это кажется невозможным - везде, где я смотрел в JRE, где CharSequence принимается, он быстро преобразуется в String до того, как будет выполнена какая-либо работа.
Большинство (все?) Операций преобразования для CharSet, по-видимому, выполняются в непубличных классах, поэтому я не нашел доступа к любому из них прозрачным и законным способом.
Как избежать мусора/использовать средства кодирования JRE CharSet напрямую?
см. CharsetEncoder – ZhongYu