# Java 8 – 逐行读取文件

> 原文： [https://howtodoinjava.com/java8/read-file-line-by-line/](https://howtodoinjava.com/java8/read-file-line-by-line/)

在本 [Java 8 教程](https://howtodoinjava.com/java-8-tutorial/)中，学习**使用[流 API](https://howtodoinjava.com/java8/java-streams-by-examples/) 逐行读取**文件。 另外，还要学习遍历行并根据某些条件过滤文件内容。

## 1\. Java 8 读取文件 – 逐行

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

```java
Path filePath = Paths.get("c:/temp", "data.txt");

//try-with-resources
try (Stream<String> lines = Files.lines( filePath )) 
{
	lines.forEach(System.out::println);
} 
catch (IOException e) 
{
	e.printStackTrace();
}

```

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

```java
Never
store
password
except
in mind.

```

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

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

```java
Path filePath = Paths.get("c:/temp", "data.txt");

try (Stream<String> lines = Files.lines(filePath)) 
{

	 List<String> filteredLines = lines
	 				.filter(s -> s.contains("password"))
	 				.collect(Collectors.toList());

	 filteredLines.forEach(System.out::println);

} 
catch (IOException e) {

	e.printStackTrace();
}

```

程序输出。

```java
password

```

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

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

到 Java 7 为止，我们可以通过[`FileReader`](https://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html)以各种方式读取文件。

```java
private static void readLinesUsingFileReader() throws IOException 
{
    File file = new File("c:/temp/data.txt");

    FileReader fr = new FileReader(file);
    BufferedReader br = new BufferedReader(fr);

    String line;
    while((line = br.readLine()) != null)
    {
        if(line.contains("password")){
            System.out.println(line);
        }
    }
    br.close();
    fr.close();
}

```

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

学习愉快！