Файл Канал читает / добавляет неверные данные

Я использую файловый канал с байтовым буфером для отправки пакетов по сети. Моя проблема в том, что когда файловый канал читает последние несколько байтов, он добавляет последний бит данных из предыдущих прочитанных байтов, хотя я очищаю буфер байтов после записи.

Например,

Размер байтового буфера = 512 Для последней итерации оставшиеся байты для отправки - 372. Он читает последние 372, но также добавляет еще 140 байтов (512-372) к концу и, похоже, что последние 140 байтов взяты из предыдущие 512 байт отправлены.

Вот мой код:

ByteBuffer bBuffer = ByteBuffer.allocate(512);

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

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

    //omitted code
}

Ответы на вопрос(1)

Ваш ответ на вопрос