Я читаю двоичный файл со структурой:
(целое число) (байт [])
Целое число представляет собой размер следующего массива байтов. Чтобы не выделять все время массив байтов, я просто выделяю, когда размер следующего чтения больше, чем последний.
int sz = rawBuffer.getInt();
if (sz > lSz){ //lSz is a class variable
buffer = new byte[sz];
lSz = sz;
}
rawBuffer.get(buffer, 0, sz);
Проблема в том, что буфер всегда имеет максимальный размер. Если прочитать массив байтов размера 5 и массив байтов размера 3, то значение buffer.length будет равно 5.
Можно ли как-то изменить размер буфера без перераспределения? Или лучше иметь другую структуру, которая содержит эффективный размер массива, например, ByteBuffer.
ArrayList
? - person Sam Estep   schedule 07.07.2015