可以InputSteam.read溢出缓冲区

时间:2012-12-03 15:07:32

标签: java inputstream

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

我只是以8为例来过度戏剧化。

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

1 个答案:

答案 0 :(得分:3)

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

目前尚不清楚“服务器”的含义,但第一次读取后,10字节消息的最后两个字节可用。 (或者,第一个read()只读取前六个字节,剩下四个仍然可以读取。)