【问题标题】:bufferedReader.readLine() will never equal nullbufferedReader.readLine() 永远不会等于 null
【发布时间】:2016-11-25 21:46:55
【问题描述】:

我正在编写一些从文本文件中提取名称和 ID 的代码。为此,我使用了一个 while 循环。似乎 while 循环条件始终为真,并且程序永远不会跳出 while 循环。代码如下所示任何帮助将不胜感激。谢谢。

while((line = br.readLine()) != null) {
            line = br.readLine();
            endOfFirstName = line.indexOf(",");
            first_name = line.substring(0, endOfFirstName);
            endOfLastName = line.indexOf(" ");
            last_name = line.substring(endOfFirstName + 1, endOfLastName);
            id = line.substring(endOfLastName + 1);
        }

【问题讨论】:

    标签: android bufferedreader


    【解决方案1】:

    这个条件

    while((line = br.readLine()) != null)
    

    用于处理流结束/被关闭 -

    From the docs:

    包含行内容的字符串,不包括任何行终止字符,如果已到达流的末尾,则为 null。

    您必须处理自己的循环终止 - 取决于您认为值得循环关闭的内容。

    即在标准 HTTP 请求中,这是通过空白换行符完成的。

    编辑

    您还丢弃了流中的每一行

    去掉多余的

    line = br.readLine();
    

    因为这已经被循环处理了。

    【讨论】:

    • 你知道我应该使用什么条件来在我到达文件末尾后停止阅读吗?
    • 读我编辑,先试试。您正在丢弃文件的每一行。
    • 我明白了。我在想要跳出循环的地方添加了“BREAK”并将条件设置为 while(!(br.readLine().equals(“BREAK”))。但是,它仍然不会爆发。
    • 编辑原始问题以反映任何代码更改和错误。
    • 这个循环应该在文件读取完毕后正确退出。
    猜你喜欢
    • 2011-09-05
    • 2014-07-07
    • 2011-10-27
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多