扩展 Java 内存映射字节缓冲区
有没有办法扩展 Java 内存映射字节缓冲区,以便将新大小反映回磁盘上的映射文件?
Is there a way to expand the Java memory-mapped byte buffer such that the new size is reflected back to the mapped file on disk?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,您需要调整底层文件的大小并重新创建内存映射字节缓冲区。
注意:设置文件长度有一些稍微奇怪的行为。如果您通过地图在超出文件末尾的特定位置写入文件(使用map.position()或map.putX(position, ...)),则值将附加到文件的末尾文件并没有写入您期望的位置(至少在 Linux 上)。如果这是不需要的行为,您将需要将数据附加到文件中才能真正增大文件。
No, you will need to adjust the size of the underlying file and recreate the Memory Mapped Byte Buffer.
Note: Setting the file length has some slightly odd behaviour. If you write to the file via the map at a specific position that is beyond the end of the file (either using map.position() or map.putX(position, ...)) the values will be appended to the end of the file and not written at the position you expect (on linux at least). If this is undesired behaviour you will need to append data to the file in order to truly grow the file.