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