簡體   English   中英

Java Bytebuffer 只能順序讀取?

[英]Java Bytebuffer can only read sequentially?

我正在將文件映射到內存並使用 java 的 ByteBuffer 讀回它。 這被證明是讀取大文件的一種非常快速的方式。 但是,我只能按順序讀取值。 這意味着一旦我讀取它們buffer.getInt()緩沖區指針移動到下一個字節。 所以如果我想多次使用一個值,我必須將它存儲到另一個變量中:

int a = buffer.getInt()

我注意到,與僅讀取字節相比,這種將一塊內存復制到另一塊內存的方法需要很長時間(尤其是對於非常大的文件)。 有沒有辦法可以重新讀取這些字節而不是復制它們?

只需使用 position(int) 在 ByteBuffer 中尋找。 然后你可以從任何地方閱讀。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM