Если вам нужно создать строку, вам потребуется в несколько раз больше памяти, чем размер всех байтов.
Во-первых, строка - это массив символов, символ имеет размер 2 байта.
Во-вторых, String является неизменным объектом, поэтому его невозможно создать с использованием существующего массива, поэтому для его создания будет создана вторая копия массива символов.Если потребление памяти имеет жизненно важное значение, рассмотрите возможность использования CharSequence
вместо String
.
Наконец, используйте StringBuilder
или StringWriter
, например:
String writer = new StringWriter();
writer.write(new String(byteArrayChunk1, "UTF-8"));
...
writer.write(new String(byteArrayChunkN, "UTF-8"));
String resultString = writer.toString();
ОБНОВЛЕНИЕ : Еще один вариант, гораздо лучше, я думаю:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(byteArrayChunk1);
baos.write(byteArrayChunkN);
String resultString = baos.toString("UTF-8");