我正在使用 Java NIO 进行套接字操作。在过去使用流时,read
调用(您正在读取字节数组,或在本例中为 a ByteBuffer
)返回从流中读取的字节数,如果流已关闭,则返回 -1。所以你基本上可以做到
while(channel.read(buffer) != -1){
//do stuff
}
但是,我注意到我正在杀死我的服务器。当我添加一些日志语句时,我注意到read()
调用在流的末尾返回 -2。根据文档:
返回:读取的字节数,可能为零,如果通道已到达流尾,则为 -1
以前有人经历过吗?我将代码更改为在值 >0 上循环,但我想确保我了解发生了什么。