MappedByteBuffer包含多个文件

时间:2015-09-15 18:03:23

标签: java memory-mapped-files filechannel mappedbytebuffer

说到Java NIO MappedByteBuffer,是否可以将部分不同文件映射到缓冲区?像这样:

buffer = infilechannel1.map(FileChannel.MapMode.READ_WRITE, infilechannel1.position(), infilechannel1.size());

然后是这样的:

buffer = infilechannel2.map(FileChanne2.MapMode.READ_WRITE, infilechannel2.position(), infilechannel2.size());

目前,发生的情况是,在第一个“put”中,缓冲区的限制已经设置为某个值。第二个“put”进入缓冲区会导致缓冲区溢出异常。我已经为缓冲区分配了足够的空间。

如何使用第二个文件中的值更新(即附加)此缓冲区?

编辑:我最初的问题不正确。编辑它以使其更有意义。

我有一些大文件(比如4,现在大小相等)和文件,甚至个别不适合内存。我必须对4个文件执行操作并创建单个输出文件。由于我的存储器与文件的大小相比非常小,所以我一次只能处理4个块,即每次处理每个文件一个块。我可以创建多个MemoryByteBuffers,它映射到文件中的特定块,然后写入ByteBuffer进行处理或者我可以直接将每个块写入ByteBuffer。

在这种情况下使用MemoryByteBuffer有什么好处/意义吗?

0 个答案:

没有答案