我使用StreamGobbler来消耗进程的输出。
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
int count = 0;
while ( (line = br.readLine()) != null);
{
if(line == null){
System.out.println("This shouldn't print out.");
}
}
我认为很明显字符串“这不应该打印出来”。不应该打印出来,但确实如此。我不知道要提供哪些进一步的数据。
答案 0 :(得分:6)
在while表达式后面有一个分号,它终止了它,因此以下大括号被视为通用语句块。
基本上,分号会使它像这样对待。
while ( (line = br.readLine()) != null) {} //do nothing
if(line == null){
System.out.println("This shouldn't print out.");
}
答案 1 :(得分:1)
从while循环中删除分号,它使循环不执行任何操作,然后向前移动到if块,这将是真的。这就是打印的原因