Javadocs dla InputStream.read()
powiedzieć:
Jeśli długość b
wynosi zero, wówczas żadne bajty są odczytywane i 0 zwrócony jest
W normalnym użytkowaniu, to nigdy nie powinno się zdarzyć, więc nie niewiele wskazuje na to, że testujemy ten warunek w sposób jawny. (Jeśli chcesz uniknąć pętli na zawsze, ponieważ bufor jest zerowej długości, a nie szybki w tej sytuacji, po prostu przetestować długość bufora.)
Dalej jest:
Powroty: łączna liczba bajtów wczytanych do bufora lub -1
, jeśli nie ma więcej danych, ponieważ został osiągnięty koniec strumienia.
Jeśli chcesz przetestować EOF (lub strumienia sieciowego, lub cokolwiek), użyj testu:
if (inputStream.read(buffer) != -1) ...
Implementacja non-buggy Java nigdy niczego innego powrotu aby wskazać, że nie ma już dostępnych danych.
Pierwszy nie wykrywa 'inputstream.read() == 0', co jest poprawną odpowiedzią. –
Może miałeś na myśli> = 0? – Gabber
http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read%28byte[]%29. Wszystko to wyjaśniono w dokumencie api. –