Карта FileChannel - не может быть расширена для записи

Я открываю большой файл (~ 200 МБ) с помощью RandomAccessFile, а затем получаю канал для него. Я пытаюсь сопоставить некоторые данные с MappedByteBuffer, но я получаю исключение:

Канал не открыт для записи - невозможно расширить файл до необходимого размера.

Я не могу понять, почему метод map пытается записать в файл - область отображения меньше размера файла! Почему он пытается расширить файл в этом случае?

Обновить

Проблема решена, оказалось, что я думал, что 3-й параметр указывает на позицию индекса в файле, что это длина буфера.

1 ответ

Решение

Из документа:

Параметры:

position Позиция в файле, с которой должна начинаться отображаемая область; должен быть неотрицательным

размер Размер области для отображения; должен быть неотрицательным и не более java.lang.Integer.MAX_VALUE

Какой именно размер файла у вас есть? Вы пытаетесь сопоставить смещение + размер, который превышает размер файла?

Другие вопросы по тегам