Файл Канал читает / добавляет неверные данные
Я использую файловый канал с байтовым буфером для отправки пакетов по сети. Моя проблема в том, что когда файловый канал читает последние несколько байтов, он добавляет последний бит данных из предыдущих прочитанных байтов, хотя я очищаю буфер байтов после записи.
Например,
Размер байтового буфера = 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
}