Một trường hợp sử dụng khá phổ biến ByteBuffer
là xây dựng từng phần một cấu trúc dữ liệu và sau đó ghi toàn bộ cấu trúc đó vào đĩa. flip
được sử dụng để lật ByteBuffer
từ "đọc từ I / O" ( put
ting) sang "ghi vào I / O" ( get
ting): sau khi một chuỗi put
s được sử dụng để điền vào ByteBuffer
, flip
sẽ đặt giới hạn của bộ đệm ở vị trí hiện tại và đặt lại vị trí về không. Điều này có tác dụng tạo ra một tương lai get
hoặc write
từ bộ đệm ghi tất cả những gì đã có put
vào bộ đệm và không còn nữa.
Sau khi hoàn thành put
, bạn có thể muốn sử dụng lại ByteBuffer
để xây dựng một cấu trúc dữ liệu khác. Để "mở" nó, hãy gọi clear
. Điều này đặt lại giới hạn dung lượng (làm cho tất cả bộ đệm có thể sử dụng được) và vị trí thành 0.
Vì vậy, một kịch bản sử dụng điển hình:
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);
}