1

读取命令是否在填充数据时检查缓冲区的大小,或者是否有可能因为缓冲区不够大而丢失数据?换句话说,如果有十个字节的数据可供读取,服务器是否会继续存储剩余的 2 个字节的数据,直到下一次读取。

我只是在这里用 8 作为例子来过度戏剧化这种情况。

InputStream stdout;
...
while(condition)
{
    ...
    byte[] buffer = new byte[8];
    int len = stdout.read(buffer);
}
4

1 回答 1

3

不,read()不会因为您没有为所有可用字节提供足够的空间而丢失任何数据。

不清楚您在这里所说的“服务器”是什么意思,但第一次读取后,10 字节消息的最后两个字节将可用。(或者有可能,例如,第read()一个字节只会读取前六个字节,剩下四个字节要读取。)

于 2012-12-03T15:09:21.507 回答