Jednym z dość powszechnych przypadków użycia ByteBufferjest konstruowanie struktury danych kawałek po kawałku, a następnie zapisywanie całej struktury na dysku. flipsłuży do zamiany ByteBufferz "odczytu z I / O" ( putting) na "zapis do I / O" ( getting): po zastosowaniu sekwencji puts do wypełnienia ByteBuffer, flipustawi limit bufora na bieżącą pozycję i zresetuj pozycję do zera. To powoduje, że przyszłość getlub writez bufora zapisują wszystko, co było putdo bufora i nic więcej.
Po zakończeniu putmożesz chcieć ponownie użyć ByteBufferdo skonstruowania innej struktury danych. Aby to „odpiąć”, zadzwoń clear. Spowoduje to zresetowanie limitu do pojemności (dzięki czemu cały bufor będzie nadający się do użytku), a pozycja na 0.
Tak więc typowy scenariusz użycia:
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);
}