2

我正在使用 RandomAccessFile 打开大文件(~ 200 MB),然后为它获取 Channel。我正在尝试将一些数据映射到 MappedByteBuffer,但出现异常:

通道未打开写入 - 无法将文件扩展为所需大小。

我不明白,为什么 map 方法试图写入文件 - 映射区域小于文件大小!为什么在这种情况下尝试扩展文件?

更新

问题解决了,原来我认为第三个参数表示文件中的索引位置,它是缓冲区的长度。

4

1 回答 1

2

来自文档:

参数:

position文件中映射区域开始的位置;必须是非负数

size要映射的区域的大小;必须为非负数且不大于 java.lang.Integer.MAX_VALUE

你的文件大小到底是多少?您是否尝试映射超出文件大小的偏移量+大小?

于 2014-02-27T22:13:29.023 回答