bcsta
bcsta

Reputation: 2307

Java Bytebuffer can only read sequentially?

I am mapping a file to memory and reading it back with java's ByteBuffer. This proves to be a really fast way of reading large files. However, I can only read the values sequentially. Meaning that once I read them buffer.getInt()the buffer pointer moves to the next bytes. So If I want to use a value more than once I have to store it to another variable:

int a = buffer.getInt()

I am noticing that this approach of copying a piece of memory to another is taking a long time (especially with a very large file) compared to just reading bytes. Is there a way I can re-read those bytes instead of copying them?

Upvotes: 1

Views: 2141

Answers (1)

xiao yang
xiao yang

Reputation: 101

Just use position(int) to seek in ByteBuffer. Then you can read from anywhere.

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

Upvotes: 2

Related Questions