Java 通过缓冲垫调整大小、冲洗和关闭
这实际上是关于如何使用内存映射文件的三个问题。我所做的很有效,但我缺少一个权威的答案 我的Java 通过缓冲垫调整大小、冲洗和关闭,java,flush,memory-mapped-files,mappedbytebuffer,Java,Flush,Memory Mapped Files,Mappedbytebuffer,这实际上是关于如何使用内存映射文件的三个问题。我所做的很有效,但我缺少一个权威的答案 我的ByteBuffer如下所示: raf = new RandomAccessFile(file, isReadonly ? "r" : "rw"); channel = raf.getChannel(); buffer = channel.map(mode, 0, channel.size()); 对于调整大小,以下方法似乎有效 raf.setLength(newLength); channel = ra
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(),但它真的正确吗
根据,调用
force
应该刷新它(我使用的是本地驱动器)。我只是想知道它是如何声明noIOException
的,如果它失败了会发生什么
我必须关闭什么?
RandomAccessFile
、FileChannel
,还是两者都有?我必须先调用一些flush
或MappedByteBuffer.force
对于调整大小,以下方法似乎有效
raf.setLength(newLength);
channel = raf.getChannel();
没有调用raf.getChannel(),但它真的正确吗
对。你不需要重新获得频道。在setLength()之后仍然有效
根据Javadoc,调用force()
应该刷新它(我使用的是本地驱动器)。我只是想知道它是如何声明noIOException
的,如果它失败了会发生什么
你似乎在这里谈论的是。我无法解释设计师的选择
我必须关闭什么?RandomAccessFile、FileChannel或两者
他们中的任何一个
我是否必须在之前调用一些flush()
或MappedByteBuffer.force()
没有flush()
。如果愿意,可以调用force()
,否则更改可能会延迟
对于调整大小,以下方法似乎有效
raf.setLength(newLength);
channel = raf.getChannel();
没有调用raf.getChannel(),但它真的正确吗
对。你不需要重新获得频道。在setLength()之后仍然有效
根据Javadoc,调用force()
应该刷新它(我使用的是本地驱动器)。我只是想知道它是如何声明noIOException
的,如果它失败了会发生什么
你似乎在这里谈论的是。我无法解释设计师的选择
我必须关闭什么?RandomAccessFile、FileChannel或两者
他们中的任何一个
我是否必须在之前调用一些flush()
或MappedByteBuffer.force()
没有flush()
。如果愿意,可以调用force()
,否则更改可能会延迟