Карта FileChannel - не может быть расширена для записи
Я открываю большой файл (~ 200 МБ) с помощью RandomAccessFile, а затем получаю канал для него. Я пытаюсь сопоставить некоторые данные с MappedByteBuffer, но я получаю исключение:
Канал не открыт для записи - невозможно расширить файл до необходимого размера.
Я не могу понять, почему метод map пытается записать в файл - область отображения меньше размера файла! Почему он пытается расширить файл в этом случае?
Обновить
Проблема решена, оказалось, что я думал, что 3-й параметр указывает на позицию индекса в файле, что это длина буфера.
1 ответ
Из документа:
Параметры:
position Позиция в файле, с которой должна начинаться отображаемая область; должен быть неотрицательным
размер Размер области для отображения; должен быть неотрицательным и не более java.lang.Integer.MAX_VALUE
Какой именно размер файла у вас есть? Вы пытаетесь сопоставить смещение + размер, который превышает размер файла?