У меня есть двоичный файл размером 10 МБ. Мне нужно прочитать его в кусках разного размера (например, 300, 273 байта). Для чтения я использую FileChannel
и ByteBuffer
. Прямо сейчас для каждой итерации чтения я выделяю новый размер ByteBuffer
, который мне нужно прочитать.Чтение определенного количества байтов в ByteBuffer
Можно ли выделить только один раз (допустим, 200 КБ) для ByteBuffer и прочитать его (300, 273 байта и т. Д.)? Я не буду читать больше 200 КБ сразу. Весь файл должен быть прочитан.
UPD
public void readFile (FileChannel fc, int amountOfBytesToRead)
{
ByteBuffer bb= ByteBuffer.allocate(amountOfBytesToRead);
fc.read(bb);
bb.flip();
// do something with bytes
bb = null;
}
Я не могу читать весь файл сразу из-за ограничений памяти. Вот почему я выполняю чтение в кусках. Эффективность также очень важна (поэтому я не хочу использовать свой текущий подход с несколькими распределениями). Спасибо
Где моя попытка (код)? –
Как выглядит ваш код? – Emz
Вы хотите, чтобы вы прочитали 300 байт, затем 273 байта, затем байты XYZ из 'FileChannel', но только выделили' ByteBuffer' один раз? –