Java MemoryMapping arquivos grandes

A limitação do Java de MappedByteBuffer para 2GIG torna difícil o uso para o mapeamento de arquivos grandes. A abordagem usual recomendada é usar uma matriz de MappedByteBuffer e indexá-la através de:

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));
}

isso pode funcionar para bytes únicos, mas requer reescrever muito código, se você quiser manipular leituras / gravações maiores e exigir que ultrapassem os limites (getLong () ou get (byte [])

A pergunta: qual é a sua melhor prática para esse tipo de cenário, você conhece alguma solução / código de trabalho que possa ser reutilizado sem reinventar a roda?

questionAnswers(1)

yourAnswerToTheQuestion