Java 带有多个文件的MappedByteBuffer

Java 带有多个文件的MappedByteBuffer,java,memory-mapped-files,filechannel,mappedbytebuffer,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.positi

对于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());
然后像这样:

buffer = infilechannel1.map(FileChannel.MapMode.READ_WRITE, infilechannel1.position(), infilechannel1.size());
buffer = infilechannel2.map(FileChanne2.MapMode.READ_WRITE, infilechannel2.position(), infilechannel2.size());
目前,发生的情况是,在第一次put中,缓冲区的限制已经设置为某个值。第二次放入缓冲区会导致缓冲区溢出异常。我已经为缓冲区分配了足够的空间

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

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

我有一些大文件,比如4个,现在大小和文件相同,即使是单独的文件,也无法放入内存。我必须对4个文件执行操作,并创建一个输出文件。由于与文件大小相比,我的内存非常小,因此一次只能处理4个块,即一次只能处理每个文件中的一个块。我可以创建多个MemoryByteBuffers,映射到文件中的特定块,然后写入ByteBuffer进行处理,也可以直接将每个块写入ByteBuffer


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

不知道你的意思。第一条语句创建一个对象并将其分配给变量缓冲区,第二条语句创建一个不同的对象并将其分配给变量缓冲区,从而删除以前的引用而不是其内容。你认为他们之间有什么联系?确实如此。我想在缓冲区中附加一个file2的映射。但是,没有可用的append方法。如何使缓冲区同时包含文件1和文件2的内容?MappedByteBuffer表示映射到内存的文件的窗口。然后,您可以像任何字节缓冲区一样向其写入数据,或从中读取数据。但我不确定您希望映射两个文件的缓冲区做什么。它就像是一扇属于两栋房子的窗户……啊,我明白了。谢谢如果我们确实在将数据写入字节缓冲区,那么使用MappedByteBuffer作为中介是否有任何意义/优势?我们不能改为从文件通道写入字节缓冲区吗?我认为你应该在问题中指定你想对数据做什么,然后我们可以说你是否需要MappedByteBuffer。