MappedByteBuffer
может обращаться к файлам случайным образом ... это «прямой байтовый буфер». (В частности, он использует подсистему виртуальной памяти ОС для сопоставления файла с памятью.)
Вы можете получить доступ к байтам случайным образом, как в фрагменте кода здесь:
public void doIt() throws FileNotFoundException, IOException {
File file = new File("myfile");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
FileChannel fc = raf.getChannel();
MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, file.length());
//get a random byte
byte b1 = mbb.get(SOME_RANDOM_BYTE);
//get another random byte
mbb.position(SOME_OTHER_BYTE_POSITION);
byte b2 = mbb.get();
}
Вы можете перемещаться по MBB и получать доступ к байтам (как чтение, так и запись).