Un caso di uso abbastanza comune per ByteBuffer
consiste nel costruire una struttura dati pezzo per pezzo e quindi scrivere l'intera struttura su disco. flip
viene utilizzato per capovolgere il ByteBuffer
da "lettura da I/O" (put
ting) per "scrivere a I/O" (get
ting): dopo una sequenza di put
s viene utilizzato per riempire la ByteBuffer
, flip
imposterà il limite del buffer alla posizione corrente e ripristinare la posizione a zero. Questo ha l'effetto di creare un futuro get
o write
dal buffer scrivendo tutto ciò che era put
nel buffer e non di più.
Dopo aver terminato il put
, si potrebbe desiderare di riutilizzare l'ByteBuffer
di costruire un'altra struttura di dati. Per "sbloccarlo", chiamare clear
. Questo reimposta il limite alla capacità (facendo tutti del buffer utilizzabile), e la posizione a 0.
Così, un tipico scenario di utilizzo:
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);
}
Esso "capta" il buffer da lettura a scrittura (e viceversa). http://thushw.blogspot.com/2009/10/java-bytebuffer-how-does-this-work.html –
@BrianRoach: Si gira da leggere a scrivere ma non è così utile per scrivere da leggere a meno che non si stia scrivendo strutture a dimensione fissa. Per lanciare a leggere da leggere, usa invece 'reset'. – nneonneo
Ricordarsi di porre domande "oggettive"; o, almeno, fai sembrare la domanda predominante obiettiva: D –