Одним з досить поширених випадків використання ByteBufferє побудова деякої структури даних поштучно, а потім запис цілої структури на диск. flipвикористовується для перемикання ByteBufferз "читання з вводу-виводу" ( putting) на "запис в I / O" ( getting): після того, як послідовність puts використовується для заповнення ByteBuffer, flipвстановить ліміт буфера в поточну позицію і скиньте положення на нуль. Це призводить до того, що майбутнє getабо writeз буфера записує все те, що було putв буфер, і не більше.
Після закінчення put, можливо, ви захочете повторно використовувати ByteBufferдля побудови іншої структури даних. Щоб "відгорнути" його, зателефонуйте clear. Це скидає обмеження ємності (робить весь буфер придатним для використання) і положення до 0.
Отже, типовий сценарій використання:
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);
}