谈到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());
目前,发生的情况是在第一个“放置”中,缓冲区的限制已经设置为某个值。第二次“放入”缓冲区会导致缓冲区溢出异常。我已经为缓冲区分配了足够的空间。
我将如何使用第二个文件中的值更新(即附加)这个缓冲区?
编辑:我最初的问题是不正确的。编辑它,使其更有意义。
我有一些大文件(比如 4 个,现在大小相等),这些文件,即使是单独的,也不适合内存。我必须对 4 个文件执行操作并创建一个输出文件。由于与文件的大小相比,我的内存非常小,我一次只能处理 4 个块,即一次从每个文件中处理一个块。我可以创建多个 MemoryByteBuffers 映射到文件中的特定块,然后写入 ByteBuffer 进行处理,或者我可以直接将每个块写入 ByteBuffer。
在这种情况下使用 MemoryByteBuffer 有什么优势/意义吗?