【发布时间】:2017-11-27 23:03:21
【问题描述】:
我对@987654321@ 的工作方式有一些疑问。我正在尝试收听InputStream,只要有可用字节,我就需要将它们复制到字节数组中,然后将字节数组移交给另一种方法进行进一步处理,然后返回收听 InputStream 进行下一步一组字节。以下是我的成绩:
while(true){
while((i = inputstream.read(recvBuffer, 0, recvBuffer.length)) != -1){
doSomething(recvBuffer);
}
}
我读到read(byte[] b, int off, int len) 方法返回一个int,它应该表示从流中读取的字节数。这是否意味着只要字节可用,它将i 的值设置为相应的字节数?一旦它读取x字节数并到达流的末尾,它不会返回一个表示字节数的正整数,而不是-1吗?那么,对-1 的检查何时会针对i 进行?我知道我在解释这个错误,但我不能说如何。任何理解这一点的帮助将不胜感激
另外,我知道发送方可以推送到流中的最大字节数。在这种情况下,将recvBuffer 的大小指定为最大字节数是否就足够了,还是谨慎分配更多?
【问题讨论】:
-
没有。在流结束时,它返回
-1(表示流结束)。 -
您应该将读取的字节数传递给您的 doSomething 方法,以便在解析字节数组时更轻松
标签: java stream network-programming