1

我正在尝试将 randomaccessfile 映射到内存,然后想要附加一些数据。 MappedByteBuffer buffer = file.getChannel().map(MapMode.READ_WRITE, 0, size);

如果 ?会发生什么size > file.length

4

3 回答 3

1

这个问题的答案在 Javadoc 中:

当请求的区域未完全包含在此通道的文件中时,此方法的行为未指定。

于 2012-06-30T07:56:46.380 回答
0

你可以试试但是..

如果内存映射的结尾超出文件的现有结尾,它将增大文件。

如果您无法以 READ_WRITE 身份访问该文件,则无论大小如何,您都会收到异常。

于 2012-06-30T07:53:19.650 回答
0

我在 Mac 上运行 Java 8,它引发了java.io.IOException: Channel not open for writing - cannot extend file to required size.

如果没有特别的理由分配超过文件大小,您总是可以使用三元来快速选择较小的。

于 2017-11-12T14:39:35.630 回答