One fairly common use case for the ByteBuffer
is to construct some data structure piece-by-piece and then write that whole structure to disk. flip
is used to flip the ByteBuffer
from "reading from I/O" (put
ting) to "writing to I/O" (get
ting): after a sequence of put
s is used to fill the ByteBuffer
, flip
will set the limit of the buffer to the current position and reset the position to zero. This has the effect of making a future get
or write
from the buffer write all of what was put
into the buffer and no more.
After finishing the put
, you might want to reuse the ByteBuffer
to construct another data structure. To "unflip" it, call clear
. This resets the limit to the capacity (making all of the buffer usable), and the position to 0.
So, a typical usage scenario:
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);
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…