BufferedReader不读取文本文件中的所有行

时间:2014-05-19 11:20:29

标签: java

我有一个功能。

public ArrayList<String> readRules(String src) {
    try (BufferedReader br = new BufferedReader(new FileReader(src))) {
        String sCurrentLine;
        while ((sCurrentLine = br.readLine()) != null) {
            System.out.println(sCurrentLine);
            lines.add(sCurrentLine);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return lines;
}

我的文件有26.400行,但此功能只读取文件末尾的3400行。 如何读取文件中的所有行。 谢谢!

2 个答案:

答案 0 :(得分:1)

为什么不使用实用方法Files.readAllLines()(自Java 7起可用)?

此方法可确保在读取所有字节或抛出IOException(或其他运行时异常)时关闭文件。

使用指定的字符集将文件中的字节解码为字符。

public ArrayList<String> readRules(String src) {
    return Files.readAllLines(src, Charset.defaultCharset());
}

答案 1 :(得分:0)

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

您可能有空行或被视为null的行。

尝试

while(br.hasNextLine())
{
    String current = br.nextLine();
}

编辑或者,在文本文件中,当行太长时,编辑器会自动将一行包装成多行。如果不使用return key,则会被BufferedReader视为单行。

Notepad++是防止单行与多行混淆的好工具。它根据返回键的用法对行进行编号。也许您可以将输入文件复制/粘贴到Notepad++并检查行号是否匹配。