java – 更优雅的输入流读循环?

前端之家收集整理的这篇文章主要介绍了java – 更优雅的输入流读循环?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

多年来我一直在从这样的循环中读取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)) {
  .....
}

它结构紧凑,可以保持计数变量的最小范围
但它可能被认为不太可读

猜你在找的Java相关文章