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

时间:2020-03-20 20:13:26

标签: java bufferedreader

我正在尝试使用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;
}

3 个答案:

答案 0 :(得分:1)

这是因为您的代码旨在仅读取一行。您需要连续确定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;
    }

答案 1 :(得分:1)

您只阅读第一行。

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

应该是-

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

答案 2 :(得分:0)

实际上,bufferReader.readLine()给您一行,它移动到下一行从光标开始直到文件末尾的位置(在行末,因为它无法再读取其他行,它返回null)。

您可以像这样通过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();
}
相关问题