Java Bytebuffer只能按顺序读取?

Java Bytebuffer只能按顺序读取?,java,performance,byte,bytebuffer,memory-mapped-files,Java,Performance,Byte,Bytebuffer,Memory Mapped Files,我正在将一个文件映射到内存,并使用java的ByteBuffer将其读回。事实证明,这是读取大文件的一种非常快速的方法。但是,我只能按顺序读取值。这意味着一旦我读取它们,缓冲区指针就会移动到下一个字节。因此,如果我想多次使用一个值,我必须将其存储到另一个变量: inta=buffer.getInt() 我注意到,与仅读取字节相比,将一段内存复制到另一段内存的方法需要很长时间(尤其是对于非常大的文件)。有没有一种方法可以重新读取这些字节而不是复制它们?只需使用位置(int)在ByteBuffer中

我正在将一个文件映射到内存,并使用java的ByteBuffer将其读回。事实证明,这是读取大文件的一种非常快速的方法。但是,我只能按顺序读取值。这意味着一旦我读取它们,缓冲区指针就会移动到下一个字节。因此,如果我想多次使用一个值,我必须将其存储到另一个变量:

inta=buffer.getInt()

我注意到,与仅读取字节相比,将一段内存复制到另一段内存的方法需要很长时间(尤其是对于非常大的文件)。有没有一种方法可以重新读取这些字节而不是复制它们?

只需使用位置(int)在ByteBuffer中查找即可。然后你可以在任何地方阅读

ByteBuffer buffer=ByteBuffer.allocate(1000);
byte[] data=new byte[10];
buffer.position(100);
//read 10 from postion 100
buffer.get(data);