日期:2014-05-20  浏览次数:20832 次

JAVA中inputstream类 read()函数问题,一个流结束的标志是?
public abstract int read()
                  throws IOException
This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

如红色部分所示,它所说的流的结束标志是什么?

------解决方案--------------------
如果另外的数据没有到达,接收端的read方法会一直等待……,只有客户端读到文件结尾的时候,才会向服务端传递结束标志-1!
------解决方案--------------------
至于为什么读取文件的时候不会读取到-1,
你得看看inputStream类的read()的方法的返回值!改方法读取文件的一个字节,可是返回类型却是int型!
它在读取的字节前是补了24个0,这样就不会和结束标记-1(即1111-1111 1111-1111 1111-1111 1111-1111)相冲突了!
至于为什么-1定义为结束标记!这个是惯例~~~