【发布时间】:2014-01-10 01:02:07
【问题描述】:
我真的遇到了麻烦:我想使用 FileChannels 和 MappedByteBuffers 读取数 GB 以上的巨大文件 - 我发现的所有文档都表明使用 FileChannel.map() 方法映射文件相当简单。
当然 2GB 是有限制的,因为所有 Buffer 方法都使用 int 来表示位置、限制和容量——但是低于该限制的系统隐含限制呢?
实际上,我遇到了很多关于OutOfMemoryExceptions 的问题!而且根本没有真正定义限制的文档!
那么 - 我如何才能将适合 int-limit 的文件安全地映射到一个或多个 MappedByteBuffers 而不会出现异常?
在尝试FileChannel.map() 之前,我可以询问系统我可以安全映射文件的哪个部分吗?如何?
为什么关于这个功能的文档这么少??
【问题讨论】:
标签: java file-io nio bytebuffer filechannel