Jednym z dość powszechnych przypadków użycia ByteBuffer
jest konstruowanie struktury danych kawałek po kawałku, a następnie zapisywanie całej struktury na dysku. flip
służy do zamiany ByteBuffer
z "odczytu z I / O" ( put
ting) na "zapis do I / O" ( get
ting): po zastosowaniu sekwencji put
s do wypełnienia ByteBuffer
, flip
ustawi limit bufora na bieżącą pozycję i zresetuj pozycję do zera. To powoduje, że przyszłość get
lub write
z bufora zapisują wszystko, co było put
do bufora i nic więcej.
Po zakończeniu put
możesz chcieć ponownie użyć ByteBuffer
do 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);
}