Un caso d'uso abbastanza comune per ByteBufferè quello di costruire una struttura dati pezzo per pezzo e poi scrivere l'intera struttura su disco. flipè usato per cambiare ByteBufferda "lettura da I / O" ( putting) a "scrittura su I / O" ( getting): dopo che una sequenza di puts è stata usata per riempire ByteBuffer, flipimposterà il limite del buffer alla posizione corrente e azzerare la posizione. Questo ha l'effetto di creare un futuro geto writedal buffer scrivere tutto ciò che era putnel buffer e non di più.
Dopo aver terminato put, potresti voler riutilizzare ByteBufferper costruire un'altra struttura dati. Per "sbloccarlo", chiama clear. Questo reimposta il limite alla capacità (rendendo utilizzabile tutto il buffer) e la posizione a 0.
Quindi, uno scenario di utilizzo tipico:
ByteBuffer b = new ByteBuffer(1024);
for(int i=0; i<N; i++) {
b.clear();
b.put(header[i]);
b.put(data[i]);
b.flip();
out.write(b);
}