java - 文件输入只读取输入文件的最后几行

标签 java file bufferedreader

这是一个简单的代码,可以从 .txt 文件中读取所有内容。不确定是什么问题。我尝试使用不同的测试文件,它只读取第 2 行和第 4 行,后跟 null。根据 while 循环条件,它甚至不应该读取 null

import java.io.*;
import java.util.*;

public class FileInput {

    public ArrayList<String> readFile() {
        ArrayList<String> content = new ArrayList<>();

        try {
            File file = new File("input.txt");
            BufferedReader br = new BufferedReader(new FileReader(file)); 

            String line = null;

            while (br.readLine() != null) {
                line = br.readLine();
                content.add(line);
                System.out.println(line);
            }

        } catch (FileNotFoundException e) {
            System.out.println("File could not be found. " + e.getMessage());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

        return content;
    }

    public static void main(String []args) {

        FileInput fi = new FileInput();
        fi.readFile();

    }   

}

输入.txt

Dangal / Aamir Khan / Fatima Sana
Sanju / Ranbir Kapoor / Dia Mirza
PK / Aamir Khan / Anushka Sharma
Munna Bhai MBBS / Sanjay Dutt / Arshad Warsi
Zindagi Na Milegi Dobara / Farhan Akhtar / Katrina Kaif

输出:

Sanju / Ranbir Kapoor / Dia Mirza
Munna Bhai MBBS / Sanjay Dutt / Arshad Warsi
null

我是不是做错了什么,还是在某处犯了一个小错误?

最佳答案

您调用了两次 br.readLine(),这导致您在 while-loop 中读取文件时跳过了几行。

将您的 while 更改为如下:-

while ((line = br.readLine()) != null) {
   content.add(line);
   System.out.println(line);
}

关于java - 文件输入只读取输入文件的最后几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54063365/

相关文章:

java - 如果数据库中当前字段为空,则创建一个新对象

java - BufferedReader.readLine() 有时会挂起

java - 从系统输入中输入 while 条件不起作用

java - Java如何只读取每一行的第二个单词

java - 如何在 JSON 中显示带有尾随零的 BigDecimal 数字(而不是字符串)?

java - 分离正则表达式中的突发部分

java - 将一个长字符串读入内存

javascript - 如何使用强大的 Node js获取文件扩展名?

perl - 为什么我的Perl祝福的文件句柄不使用 `can(' print')`'返回true?

python - 仅当第一个内容写入文件时才将文件写入磁盘