Przez lata czytałem od InputStreams w pętli jak ta:Bardziej elegancka pętla odczytu strumienia wejściowego?
final byte[] buffer = new byte[65536];
InputStream is = ...;
int r;
while ((r = is.read(buffer)) > 0) {
...
}
Ale zastanawiam się, czy istnieje sposób, aby uniknąć tego zadania w pętli (bez wprowadzania drugi warunek) - przykład Ten kod uważam nawet mniej elegancki, ponieważ istnieją dwa oświadczenia odczytu i dwa warunki:
r = is.read(buffer);
if (r > 0) {
do {
...
r = is.read(buffer);
} while (r > 0);
}
Wszelkie pomysły na bardziej elegancki (zwarta, bez zadań w warunkowa) skonstruować?
Czy porównanie nie powinno być (r> = 0) zamiast (r> 0)? Koniec strumienia oznaczony jest -1. – Leonel