FileChannel map - 无法扩展写入

时间:2014-02-27 22:00:43

标签: java nio filechannel

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

  

频道未开放供撰写 - 无法扩展所需尺寸的文件。

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

更新

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

1 个答案:

答案 0 :(得分:1)

来自doc:

  

参数:

     

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

     

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

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