Il Javadocs per InputStream.read()
dicono:
Se la lunghezza del b
è zero, allora nessun byte vengono letti e 0 viene restituito
Nell'uso normale, questo non dovrebbe mai accadere, quindi non c'è non ha molto senso testare esplicitamente questa condizione. (Se si vuole evitare il loop per sempre perché il buffer è di lunghezza zero e fail-veloce in questa situazione, solo testare la lunghezza del buffer.)
Più avanti c'è:
Returns: il numero totale di byte letti nel buffer o -1
se non ci sono più dati perché è stata raggiunta la fine del flusso.
Se si desidera verificare per end-of-file (o flusso di rete, o qualsiasi altra cosa), utilizzare il test:
if (inputStream.read(buffer) != -1) ...
Un'implementazione non-buggy Java sarà mai tornare qualsiasi altra cosa per indicare non ci sono più dati disponibili.
Il primo non rileva 'inputstream.read() == 0', che è una risposta valida. –
Forse intendevi> = 0? – Gabber
http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read%28byte[]%29. È tutto spiegato nel documento API. –