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

Cod*_*tan 1 java file bufferedreader

这是一个从.txt文件中读取所有内容的简单代码.不确定是什么问题.我尝试了一个不同的测试文件,它只读取了line2和line4 null.它甚至不应该null按照while循环条件读取.

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();

    }   

}
Run Code Online (Sandbox Code Playgroud)

input.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

我做错了什么或者我在某个地方犯了一个小错误?

Nic*_*s K 8

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

改变你的时间如下: -

while ((line = br.readLine()) != null) {
   content.add(line);
   System.out.println(line);
}
Run Code Online (Sandbox Code Playgroud)