我正在使用带有字节缓冲区的文件通道通过网络发送数据包。我的问题是,当文件通道读取最后几个字节时,即使我在写入后清除字节缓冲区,它也会从先前读取的字节中附加最后一位数据。
例如,
字节缓冲区大小 = 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
}