原文: https://howtodoinjava.com/java8/read-file-line-by-line/

在本 Java 8 教程中,学习使用流 API 逐行读取文件。 另外,还要学习遍历行并根据某些条件过滤文件内容。

1. Java 8 读取文件 – 逐行

在此示例中,我将读取文件内容为stream,并一次读取每一行,并检查其中是否包含单词"password"

  1. Path filePath = Paths.get("c:/temp", "data.txt");
  2. //try-with-resources
  3. try (Stream<String> lines = Files.lines( filePath ))
  4. {
  5. lines.forEach(System.out::println);
  6. }
  7. catch (IOException e)
  8. {
  9. e.printStackTrace();
  10. }

上面的程序输出将在控制台中逐行打印文件的内容。

  1. Never
  2. store
  3. password
  4. except
  5. in mind.

2. Java 8 读取文件 – 过滤行流

在此示例中,我们将文件内容读取为行流。 然后,我们将过滤掉所有带有单词"password"的行。

  1. Path filePath = Paths.get("c:/temp", "data.txt");
  2. try (Stream<String> lines = Files.lines(filePath))
  3. {
  4. List<String> filteredLines = lines
  5. .filter(s -> s.contains("password"))
  6. .collect(Collectors.toList());
  7. filteredLines.forEach(System.out::println);
  8. }
  9. catch (IOException e) {
  10. e.printStackTrace();
  11. }

程序输出。

  1. password

我们将读取给定文件的内容,并检查是否有任何一行包含单词"password",然后将其打印出来。

3. Java 7 – 使用FileReader读取文件

到 Java 7 为止,我们可以通过FileReader以各种方式读取文件。

  1. private static void readLinesUsingFileReader() throws IOException
  2. {
  3. File file = new File("c:/temp/data.txt");
  4. FileReader fr = new FileReader(file);
  5. BufferedReader br = new BufferedReader(fr);
  6. String line;
  7. while((line = br.readLine()) != null)
  8. {
  9. if(line.contains("password")){
  10. System.out.println(line);
  11. }
  12. }
  13. br.close();
  14. fr.close();
  15. }

这就是 Java 逐行读取文件示例的全部。 请在评论部分提出您的问题。

学习愉快!