如何使用BufferedReader将txt文件中的行读取到数组中

时间:2015-07-28 21:55:16

标签: java file bufferedreader

我知道如何阅读Scanner行,但如何使用BufferedReader?我希望能够将行读入数组。我可以将hasNext()函数与Scanner但不是BufferedReader一起使用,这是我唯一不知道该怎么做的事情。如何检查何时到达文件结尾?

BufferedReader reader = new BufferedReader(new FileReader("weblog.txt"));

String[] fileRead = new String[2990];
int count = 0;

while (fileRead[count] != null) {
    fileRead[count] = reader.readLine();
    count++;
}

3 个答案:

答案 0 :(得分:1)

如果到达流的末尾,则readLine() null返回String currentLine; while((currentLine = reader.readLine()) != null) { //do something with line }

通常的习惯用法是更新在while条件下保存当前行的变量,并检查它是否为空:

Files.readAllLines

顺便说一句,您可能事先不知道您将阅读的行数,因此我建议您使用列表而不是数组。

如果您打算阅读所有文件的内容,可以改为使用//or whatever the file is encoded with List<String> list = Files.readAllLines(Paths.get("weblog.txt"), StandardCharsets.UTF_8);

[object Object]
undefined cal

答案 1 :(得分:1)

readLine()在到达null后返回EOF

只是

do {
  fileRead[count] = reader.readLine();
  count++;
} while (fileRead[count-1]) != null);

当然这段代码不是推荐的阅读文件的方式,但是如果你想要按照你想要的方式(一些预定义的大小数组,计数器等)来完成它,它会显示如何完成。

答案 2 :(得分:1)

using readLine(), try-with-resources and Vector

    try (BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\weblog.txt")))
    {
        String line;
        Vector<String> fileRead = new Vector<String>();

        while ((line = bufferedReader.readLine()) != null) {
            fileRead.add(line);
        }

    } catch (IOException exception) {
        exception.printStackTrace();
    }