这实际上是关于如何使用内存映射文件的三个问题。我所做的工作,但我错过了一个权威的答案。
我得到我的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
之前打电话吗?