На самом деле это три вопроса о том, как работать с файлами с отображением памяти. То, что я делал, работает, но мне не хватает авторитетного ответа.Изменение размера, промывка и закрытие ByteBuffer
я получаю мой ByteBuffer
нравится следующим образом:
raf = new RandomAccessFile(file, isReadonly ? "r" : "rw");
channel = raf.getChannel();
buffer = channel.map(mode, 0, channel.size());
Для изменения размера, следующий, кажется, работает
raf.setLength(newLength);
channel = raf.getChannel();
без вызова raf.getChannel()
, но это действительно верно?
Согласно Javadoc, вызов force
должен очистить его (я использую локальный диск). Мне просто интересно, как это происходит, если он объявляет IOException
и , что произойдет, если он не сработает?
Что мне нужно закрыть? RandomAccessFile
, FileChannel
, или оба из них? Должен ли я позвонить некоторым flush
или MappedByteBuffer.force
раньше?