Um caso de uso bastante comum para o ByteBuffer
é construir alguma estrutura de dados peça por peça e, em seguida, gravar essa estrutura inteira no disco. flip
é usado para mudar ByteBuffer
de "leitura de I / O" ( put
ting) para "gravação de I / O" ( get
ting): após uma sequência de put
s ser usada para preencher o ByteBuffer
, flip
definirá o limite do buffer para a posição atual e redefinir a posição para zero. Isso tem o efeito de fazer um futuro get
ou write
do buffer gravar tudo o que estava put
no buffer e nada mais.
Depois de terminar o put
, você pode querer reutilizar o ByteBuffer
para construir outra estrutura de dados. Para "desviá-lo", ligue clear
. Isso redefine o limite da capacidade (tornando todo o buffer utilizável) e a posição para 0.
Portanto, um cenário de uso típico:
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);
}