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
}