這些實際上是關於如何處理內存映射文件的三個問題。我所做的工作,但我錯過了一個權威的答案。調整大小,刷新和關閉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
嗎?