Java 中的
RandomAccessFile
类在方法 long
、getFilePointer()
、length()
和 seek()
中使用类型 setLength()
。
但是,如果我想通过
MappedByteBuffer
操作这个文件,我只能将Buffer
的位置指定为int
。
这是 JDK 的特性还是 API 的缺点? (很可能是前者,但不确定为什么。)
将文件指针从
long
向下转换为 int
Buffer
位置是唯一的方法吗?
创建映射的 FileChannel.map 调用有
long size
但 Javadoc 说:
待映射区域的大小;必须是非负数并且没有 大于 Integer.MAX_VALUE
因此
int
值足以设置地图内的位置。
对于 Java 22 及以上版本,外部函数和内存支持添加了
FileChannel.map
的替代版本,它返回没有大小限制的 MemorySegment
。