Себстиано Винья великолепен!
ичение Java для MappedByteBuffer до 2GIG усложняет использование для отображения больших файлов. Обычный рекомендуемый подход - использовать массив MappedByteBuffer и индексировать его через:
long PAGE_SIZE = Integer.MAX_VALUE;
MappedByteBuffer[] buffers;
private int getPage(long offset) {
return (int) (offset / PAGE_SIZE)
}
private int getIndex(long offset) {
return (int) (offset % PAGE_SIZE);
}
public byte get(long offset) {
return buffers[getPage(offset)].get(getIndex(offset));
}
это может работать для отдельных байтов, но требует переписывания большого количества кода, если вы хотите обрабатывать операции чтения / записи, которые больше и требуют пересечения границ (getLong () или get (byte [])).
Вопрос: какова ваша лучшая практика для подобных сценариев, знаете ли вы какое-нибудь рабочее решение / код, который можно использовать повторно, не изобретая колесо?