Durante años he estado leyendo desde InputStreams en un bucle como este:¿Bucle de lectura de flujo de entrada más elegante?
final byte[] buffer = new byte[65536];
InputStream is = ...;
int r;
while ((r = is.read(buffer)) > 0) {
...
}
Pero me pregunto si hay una manera de evitar que la asignación en el bucle (sin introducir segunda condición) - por ejemplo, este código considero incluso menos elegante, ya que hay dos declaraciones de lectura y dos condiciones:
r = is.read(buffer);
if (r > 0) {
do {
...
r = is.read(buffer);
} while (r > 0);
}
¿Alguna idea para una más elegante (compacta, sin asignaciones en condicional) construir?
¿No debería la comparación ser (r> = 0) en lugar de (r> 0)? El final del flujo se indica con -1. – Leonel