1
我在这行代码:InputStream.read(array)不返回array.length时到达的流结束了吗?
final int packetLength = 64 //just some constant
InputStream in = socket.getInputStream();
byte[] packet = new byte[packetLength];
int read = in.read(packet, 0, packetLength)
if(read != packetLength) {
//End of stream=
}
我可以肯定地说,如果read(byte[], int, int)
不返回相同的值,因为它应该阅读的长度,流到达流的末尾?
因为下一次read()
调用应该返回-1
不应该吗?
因此,让'以上in'在例如是一个SocketInputStream,我应该调用读取(字节[],INT,INT)连连和总是将数据追加到缓冲器直到:恰好
packetLength
字节读读取方法最后返回-1或packetLength字节被读取? – MinecraftShamrock@MinecraftShamrock:如果你只想读'packetLength'字节,那很好。如果你想读到流的末尾,你需要继续阅读,直到'read'返回-1。 –
我想读取'packetLength'字节。但是直到现在,如果读取的字节少于'packetLength',我将它作为流结束。所以我不想读到流结束,但我需要知道是否已达到流的结束。 – MinecraftShamrock