ФИЛЕЧАННАЛЬНАЯ КАРТА - не может распространяться на написание
-
24-12-2019 - |
Вопрос
Я открываю большой файл (~ 200 МБ) с помощью RandomAccessFile, а затем получить канал для него.Я пытаюсь сопоставить некоторые данные для maphaphyTebuffer, но я получаю исключение:
канал, не открытый для записи - не может расширить файл для требуемого размера.
Я не могу выяснить, почему метод MAP пытается написать на файл - площадь сопоставления меньше, чем размер файла!Почему он пытается расширить файл в этом случае?
<Сильное> Обновление
Решается проблема, оказалось, что я думал, что 3-й параметр указан для положения индекса в файле, что это была длина буфера.
Решение
из дока:
Параметры:
Положение позиция в файле, на котором должна начинаться сопоставленная область;Должен быть неотрицательным <Сильный> Размер Размер региона, который будет сопоставлен;Должен быть неотрицательным и не больше, чем java.lang.integer.max_value
Какой именно размер файла у вас есть? Вы пытаетесь сопоставить смещение + размер, который превышает размер файла?