文件通道映射 - 无法扩展写入



我正在使用RandomAccessFile打开大文件(~200 MB),然后获取频道。我正在尝试将一些数据映射到MappedByteBuffer,但是我遇到了异常:

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

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

更新

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

来自文档:

参数:

position 映射区域要从哪个位置开始的文件内的位置;必须为非负数

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

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

最新更新