0

我已经实例化 aBufferedReader来读取输入流。它有一个布尔ready()方法,在可以读取阅读器之前返回 false。我现在有

BufferedReader br = new BufferedReader(new InputStreamReader(myProcess.getInputStream()));
try {
  while (!br.ready()) {
  }
  String line = br.readLine();
  ...
} catch (IOException e) {
...

PMD 警告我的是空while块,我猜 PMD 是对的。我该如何重写代码?

4

3 回答 3

5

不想使用ready(). readLine()是阻塞调用,直接调用即可。

BufferedReader 的标准用法是:

String line = null;
while((line = br.readLine) != null) {
  // do stuff with line here ...
}
于 2013-04-30T14:41:53.340 回答
1

你可以试试这个:

BufferedReader br = new BufferedReader(new InputStreamReader(myProcess.getInputStream()));
try {
   String line;
   while ( null != (line = br.readLine() )) {
      ...
   }
   ...
 } catch (IOException e) { ... }
于 2013-04-30T14:41:13.227 回答
-1

重写它的一种方法是

while(!br.ready());

但更易读的方法是仅在缓冲区准备好时读取

while(br.ready()){
   String line = br.readLine();
   ...
}
于 2013-04-30T14:42:19.760 回答