O File Channel lê / adiciona dados incorretos

Estou usando um canal de arquivos com um buffer de bytes para enviar pacotes pela rede. Meu problema é que, quando o canal de arquivos lê os últimos bytes, ele acrescenta o último bit de dados dos bytes anteriores lidos, embora eu esteja limpando o buffer de bytes depois de escrever.

Por exemplo,

Tamanho do buffer de bytes = 512 Para a última iteração, os bytes restantes a serem enviados são 372. Ele lê os últimos 372, mas também acrescenta outros 140 bytes (512-372) ao final e parece que os últimos 140 bytes são do diretório 512 bytes anteriores enviados.

Heres meu código:

ByteBuffer bBuffer = ByteBuffer.allocate(512);

while (fChannel.read(bBuffer) > 0) {

    bBuffer.flip();
    datagramChannel.write(bBuffer);
    bBuffer.clear();

    //omitted code
}

questionAnswers(1)

yourAnswerToTheQuestion