多年来我一直在从这样的循环中读取InputStreams:
final byte[] buffer = new byte[65536];
InputStream is = ...;
int r;
while ((r = is.read(buffer)) > 0) {
...
}
但我想知道是否有办法在循环中避免该赋值(不引入第二个条件) – 例如我认为这个代码更不优雅,因为有两个read语句和两个条件:
r = is.read(buffer);
if (r > 0) {
do {
...
r = is.read(buffer);
} while (r > 0);
}
任何更优雅的想法(紧凑,没有条件的任务)构造?
最佳答案
你怎么看待这件事:
for (int count = stream.read(buffer); count >= 0; count = stream.read(buffer)) {
.....
}
它结构紧凑,可以保持计数变量的最小范围
但它可能被认为不太可读