Java字节缓冲区只能顺序读取?

问题描述 投票:0回答:1

我正在将文件映射到内存,并使用Java的ByteBuffer读回它。事实证明,这是读取大型文件的快速方法。但是,我只能顺序读取这些值。表示一旦我读取它们buffer.getInt(),缓冲区指针就会移至下一个字节。因此,如果我想多次使用一个值,则必须将其存储到另一个变量中:

int a = buffer.getInt()

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

java performance byte bytebuffer memory-mapped-files
1个回答
0
投票

只需使用position(int)来查找ByteBuffer。然后您可以从任何地方读取它。

        ByteBuffer buffer=ByteBuffer.allocate(1000);
        byte[] data=new byte[10];
        buffer.position(100);
        //read 10 from postion 100
        buffer.get(data);
© www.soinside.com 2019 - 2024. All rights reserved.