如何抑制BufferReader的空输出?

时间:2013-12-10 18:40:33

标签: java null bufferedreader

使用以下代码将阅读器的输出拆分为字符串,然后在构造函数中使用。但是,当bufferreader到达流的末尾时,它输出null,然后在构造函数中导致空指针异常。

List<Pattern> resultList = new LinkedList<Pattern>();
    BufferedReader buff = new BufferedReader(r);
    String current;
    while (buff != null) {
        current = buff.readLine();
        System.out.println(current);
        Pattern p = new Pattern(current);
        resultList.add(p);

        }
    return resultList;

我已经尝试使用if语句来测试当前字符串是否为null,但是我不知道在if子句的主体中放入什么。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

buff永远不会为空 - 它是readLine的返回值,当您到达数据末尾时它为null。 那是您需要检查的内容,通常使用代码将值分配给变量并一次性检查:

String current;
while ((current = buff.readLine()) != null) {
    System.out.println(current);
    Pattern p = new Pattern(current);
    resultList.add(p);
}

答案 1 :(得分:1)

不是将if放入while,而是更改循环的条件:

while (buff != null)

为:

while ((current = buff.readLine()) != null)  
到达流的末尾,

buff不会变为null,但如果没有更多的输入要返回,current将变为null < / p>