bufferedreader.readline()将所有行返回为null

btqmn9zl  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(328)

我有一些非常简单的代码来准备txt文件的内容,逐行并将其放入字符串[],但是缓冲读取器将所有行返回为“null”-知道原因是什么吗*我想使用缓冲读取器,而不是其他选项,因为这只是java培训练习的一部分,我主要想了解我犯的错误在哪里。谢谢!

public static void readFile (String path){
    File file = new File(path);
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        int lineCount = (int) br.lines().count();
        String[] passwords = new String[lineCount];

        for (int i=0; i<lineCount; i++){
            passwords[i] = br.readLine();;
            System.out.println(passwords[i]);
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

}

6fe3ivhb

6fe3ivhb1#

通过使用 lines() 方法基本上将缓冲读取器位置移动到文件的末尾。好像你已经读过这些台词了。
尝试使用此命令遍历所有行:

while ((line = br.readLine()) != null) {  
  // Use the line variable here  
}
3ks5zfa0

3ks5zfa02#

使用 br.lines() 或者 br.readLine() 消耗输入,但不能同时消耗两者。此版本仅使用stream to string[]执行相同的操作,并关闭try with resources块中的输入:

public static String[] readFile(Path path) throws IOException {
    try (BufferedReader br = Files.newBufferedReader(path);
        Stream<String> stream = br.lines()) {
        return stream.peek(System.out::println)
                          .collect(Collectors.toList())
                          .toArray(String[]::new);
    }
}

String[] values = readFile(Path.of("somefile.txt"));

相关问题