无法理解如何找到文件结尾

时间:2016-03-31 08:11:06

标签: java

我正在编写代码,以便我阅读当前行和下一行。如果下一行包含一些字符串,我需要删除当前行。

但是当我这样做时,一旦它到达EOF,它就会显示空指针异常。

以下是我的代码。

private static void cleanUpTempFile(File temp) throws IOException {
        FileReader fr = new FileReader(temp);
        BufferedReader temp_in = new BufferedReader(fr);
        String tempStr, tempStr1 = null;
        int i = 0;
        for (String next, footnotes = temp_in.readLine(); footnotes != null; footnotes = next) {
            next = temp_in.readLine();
            try {
                if (next.contains("pb") && (next != null)) {
                    tempStr = footnotes;
                    tempStr1 = tempStr;
                    tempStr = tempStr1.replace(tempStr1, "");
                    footnotes = tempStr;

                }
            } catch (Exception e) {
                System.out.println(e);
            }
            System.out.println(footnotes);
        }

        temp_in.close();

    }

它引发了我的错误,因为当它结束时,当结束时,当前行显示最后一行,next指向下一行为空。我该怎么办呢。

此外,只要有替换完成,并且创建了空行,是否有办法可以停止创建新行。

我尝试在if

中添加以下代码
tempStr1 = tempStr;
footnotes = tempStr1.replace("\\s", "");

但这似乎不起作用。

尝试使用以下代码,我的控制台会打印null

private static void cleanUpTempFile(File temp) throws IOException {
        FileReader fr = new FileReader(temp);
        BufferedReader temp_in = new BufferedReader(fr);
        String tempStr, tempStr1 = null;
        String footnotes;
        while ((footnotes = temp_in.readLine()) != null) {
            String next;
            while ((next = temp_in.readLine()) != null) {
                if (next.contains("pb")) {
                    tempStr = footnotes;
                    tempStr1 = tempStr;
                    tempStr = tempStr1.replace(tempStr1, "");
                    footnotes = tempStr;

                }

            }

        }
        System.out.println(footnotes);
        temp_in.close();
    }

感谢。

2 个答案:

答案 0 :(得分:4)

根据Baldurian的建议,您可以使用Scanner#hasNextLine()

进行检查
Scanner input = new Scanner(new File(filename));
String prevLine = input.nextLine();
while(input.hasNextLine())
{
    String nextLine = input.nextLine();
    //do some stuff
    prevLine = nextLine;
}

答案 1 :(得分:0)

除了检查文件是否存在并附加到文件外(如果是这样),您还应该有一个.hasNextLine()条件。