Reads some number of bytes from the input stream and stores them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown. 

Из документации, т.е. Если метод закончил свое выполнение, это может означать одну из 3 вещей, считано запрошенное кол-во данных, обнаружен конец файла, или возникла ошибка. Т.е Если считано не запрошенное число байт, то продолжать чтение в любом случае бессмысленно