Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件输入仅读取输入文件的最后几行_Java_File_Bufferedreader - Fatal编程技术网

Java 文件输入仅读取输入文件的最后几行

Java 文件输入仅读取输入文件的最后几行,java,file,bufferedreader,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

这是一个从.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();

    }   

}
input.txt

丹加尔/阿米尔·汗/法蒂玛·萨那 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 空的

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

您两次调用br.readLine,这导致您在while循环中读取文件时跳过了几行

将您的while更改为以下内容:-

while ((line = br.readLine()) != null) {
   content.add(line);
   System.out.println(line);
}
您正在调用br.readLine两次,这会导致您在while循环中读取文件时跳过几行

将您的while更改为以下内容:-

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

您每次都在while循环标题中使用一行,而不使用whilebr.readLine=无效的将其更改为while line=br.readLine!=null{并跳过循环内的readLine调用每次在while循环头中使用一行时,不使用whilebr.readLine!=null。将其更改为while line=br.readLine!=null{跳过回路中的readLine呼叫我这边的一个愚蠢的疏忽。在我看到你的回应时改变了它。感谢。谢谢。我这边的一个愚蠢疏忽。在我看到你的回应时改变了它。感谢。谢谢。