[英]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.