El Javadocs para InputStream.read()
dicen:
Si la longitud de b
es cero, entonces no hay bytes se leen y se devuelve 0
En uso normal, esta situación no debería producirse, por lo que hay no tiene mucho sentido probar de forma explícita esta condición. (Si se quiere evitar un bucle para siempre porque el búfer es de longitud cero y fail-fast en esta situación, simplemente probar la longitud del búfer.)
Más adelante, hay:
devoluciones: el número total de bytes leídos en el búfer, o -1
si no hay más datos porque se ha alcanzado el final de la secuencia.
Si desea probar para EOF (o flujo de red, o lo que sea), utilice la prueba:
if (inputStream.read(buffer) != -1) ...
una implementación no con errores de Java nunca volver otra cosa para indicar que no hay más datos disponibles.
El primero no detecta 'inputstream.read() == 0', que es una respuesta válida. –
Quizás quiso decir> = 0? – Gabber
http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read%28byte[]%29. Todo se explica en el documento de la API. –