在下面的代码中,我觉得while()条件可能不正确,因为我调用了readLine()方法两次,意味着没有从reader中验证if()条件中的firstLine字符串。
验证缓冲读卡器(br)是否未到达行尾的正确方法是什么。
try {
if (is != null) {
br = new BufferedReader(new InputStreamReader(is));
os.write("x ample.abcd.com\r\n\r\n".getBytes());
if (br != null) {
while (br.readLine() != null) {
String returnString = br.readLine();
if (returnString.contains("250")) {
logger.debug(" string:" + returnString);
break;
}
}
}
}
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
if (br != null)
br.close();
if (sockt != null)
sockt.close();
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
你是对的。它应该是:
String line;
while ((line = br.readLine()) != null)
{
// ...
}
答案 1 :(得分:1)
您的代码正在调用readLine()
两次,这是对的。它在评估while
时调用它一次以查看条件是否为真。然后,如果是,则下一个语句再次调用它,这意味着前一行丢失。
如果EJP答案中的代码看起来太复杂或不够可读,这是另一种方式:
while (true) {
String resultString = br.readLine();
if (resultString == null)
break;
// ... the rest of the loop
}