Buffered只读读取文本文件的第一行[重复]

问题描述 投票:0回答:3

我正在尝试使用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;
}
java bufferedreader
3个回答
0
投票

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

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

0
投票

您仅阅读第一行。

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

应该是-

while ((dataInTextFile = fileInput.readLine()) != null) {
System.out.println(dataInTextFile );
}
© www.soinside.com 2019 - 2024. All rights reserved.