1

我正在使用 Java NIO 进行套接字操作。在过去使用流时,read调用(您正在读取字节数组,或在本例中为 a ByteBuffer)返回从流中读取的字节数,如果流已关闭,则返回 -1。所以你基本上可以做到

while(channel.read(buffer) != -1){
  //do stuff
}

但是,我注意到我正在杀死我的服务器。当我添加一些日志语句时,我注意到read()调用在流的末尾返回 -2。根据文档:

返回:读取的字节数,可能为零,如果通道已到达流尾,则为 -1

以前有人经历过吗?我将代码更改为在值 >0 上循环,但我想确保我了解发生了什么。

4

0 回答 0