Существует ли способ развернуть Java, который байт с отображенной памятью буферизует таким образом, что новый размер отражается назад к отображаемому файлу на диске?
Нет, необходимо изменить размер базового файла и заново создать буфер байтов, отображаемый на память.
RandomAccessFile file = new RandomAccessFile(/* some file */);
MappedByteBuffer buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());
// Some stuff happens...
// adjust the size
file.setLength(newLength);
// recreate the memory mapped buffer
buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());
Примечание: Установка длины файла имеет несколько странное поведение. Если вы записываете в файл через карту в определенную позицию, которая находится за пределами конца файла (используя map.position() или map.putX(position, ...)), значения будут добавлены в конец файла, а не записаны в ожидаемой позиции (по крайней мере, в linux). Если такое поведение нежелательно, вам придется добавлять данные в файл, чтобы действительно увеличить файл.