Одним з досить поширених випадків використання ByteBuffer
є побудова деякої структури даних поштучно, а потім запис цілої структури на диск. flip
використовується для перемикання ByteBuffer
з "читання з вводу-виводу" ( put
ting) на "запис в I / O" ( get
ting): після того, як послідовність put
s використовується для заповнення 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);
}