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

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

多年来我一直在从这样的循环中读取InputStreams:

  1. final byte[] buffer = new byte[65536];
  2. InputStream is = ...;
  3. int r;
  4. while ((r = is.read(buffer)) > 0) {
  5. ...
  6. }

但我想知道是否有办法在循环中避免该赋值(不引入第二个条件) – 例如我认为这个代码更不优雅,因为有两个read语句和两个条件:

  1. r = is.read(buffer);
  2. if (r > 0) {
  3. do {
  4. ...
  5. r = is.read(buffer);
  6. } while (r > 0);
  7. }

任何更优雅的想法(紧凑,没有条件的任务)构造?

最佳答案
你怎么看待这件事:

  1. for (int count = stream.read(buffer); count >= 0; count = stream.read(buffer)) {
  2. .....
  3. }

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

猜你在找的Java相关文章