我正在尝试将randomaccessfile映射到内存,然后想要附加一些数据。
MappedByteBuffer buffer = file.getChannel().map(MapMode.READ_WRITE, 0, size);
size > file.length
?
答案 0 :(得分:1)
这个问题的答案在Javadoc中:
当请求的区域不是时,此方法的行为 完全包含在此频道的文件中是未指定的。
答案 1 :(得分:0)
你可以试试但是......
如果内存映射的结尾超出了文件的现有末尾,则会增大文件的大小。
如果您无法以READ_WRITE身份访问该文件,则无论大小如何都会出现异常。
答案 2 :(得分:0)
我在Mac上运行Java 8,它引发了java.io.IOException: Channel not open for writing - cannot extend file to required size
。
如果没有特别的理由分配超过文件大小,您可以随时使用三元组快速选择较小的文件大小。