BufferedReader 只读取文本文件的第一行

BufferedRead only reading the first line of textfile

我正在尝试使用 BufferedReader 读取 Java 中文本文件的内容。但是,仅检索第一行。

代码如下:

public String myFile(String file)
{
    String dataInTextFile = "";
    try 
    {
        BufferedReader fileInput = new BufferedReader(new FileReader(file));

        try 
        {
            dataInTextFile = fileInput.readLine();
        } 
        catch (IOException e) 
        {
            System.out.println(e);
        }
    } 

    catch (FileNotFoundException e) 
    {
        System.out.println(e);
    }

    return dataInTextFile;
}

这是因为您的代码被设计为只读取一行。您需要不断确定 readLine() 是否产生结果,如果没有,则停止读取文件。

    private String read(String file) throws IOException {
        String dataInTextFile = "";

        try (BufferedReader fileInput = new BufferedReader(new FileReader(file))) {
            String line;

            while ((line = fileInput.readLine()) != null) {
                // process line
            }
        }

        return dataInTextFile;
    }

实际上 bufferReader.readLine() 给你一行,它移动到下一行开始光标直到文件末尾(在行尾因为它不能再读更多的行,它 returns 空)。

你可以像这样读取bufferReader

public String readFile(String filePath) {
        StringBuilder contentString = new StringBuilder();
        try {
            BufferedReader bufferReader = new BufferedReader(new FileReader(filePath));
            String line = bufferReader.readLine();
            while(line != null){
                contentStringString.append(line);
                line = bufferReader.readLine();
            }
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return contentString.toString();
}

您只读了第一行。

    try 
    {
        dataInTextFile = fileInput.readLine(); ----> One line read.
    } 
    catch (IOException e) 
    {
        System.out.println(e);
    }

应该是-

while ((dataInTextFile = fileInput.readLine()) != null) {
System.out.println(dataInTextFile );
}