java用Stream API将文本文件的内容输出到控制台
时间: 2024-05-13 16:17:42 浏览: 85
可以使用 Java 8 之后引入的 Stream API 来读取文本文件并输出到控制台。具体步骤如下:
1. 使用 `Files.lines()` 方法读取文件的每一行数据,返回一个 `Stream<String>` 对象。
2. 调用 `forEach()` 方法遍历 `Stream<String>` 对象,并输出每一行的数据。
下面是示例代码:
```java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class StreamReadFile {
public static void main(String[] args) throws IOException {
String fileName = "/path/to/text/file.txt";
Files.lines(Paths.get(fileName)).forEach(System.out::println);
}
}
```
其中,`fileName` 是要读取的文本文件的路径。使用 `Paths.get()` 方法将路径转换成 `Path` 对象,然后传递给 `Files.lines()` 方法进行读取。
在 `forEach()` 方法中,使用 `System.out::println` 方法引用来输出每一行数据到控制台。
相关问题
用java编写程序,在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间(要求使用两种方法,参考教材11.4、11.5节内容)。
好的,我理解了你的问题。下面是两种方法的示例代码:
方法1:使用 BufferedReader 和 Stream API
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.time.Duration;
import java.time.Instant;
public class CountLetterA {
public static void main(String[] args) throws IOException {
// 读取文件
BufferedReader reader = new BufferedReader(new FileReader("bigbook.txt"));
// 统计字母A的个数
Instant start = Instant.now();
long count = reader.lines()
.flatMapToInt(CharSequence::chars)
.filter(c -> c == 'A' || c == 'a')
.count();
Instant end = Instant.now();
reader.close();
// 显示结果和统计时间
System.out.println("方法1:");
System.out.println("文件中包含字母A的个数:" + count);
System.out.println("统计时间:" + Duration.between(start, end).toMillis() + " 毫秒");
}
}
```
方法2:使用 Scanner 和正则表达式
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.time.Duration;
import java.time.Instant;
import java.util.Scanner;
public class CountLetterA {
public static void main(String[] args) throws FileNotFoundException {
// 读取文件
Scanner scanner = new Scanner(new File("bigbook.txt"));
scanner.useDelimiter("\\Z");
String contents = scanner.next();
// 统计字母A的个数
Instant start = Instant.now();
long count = contents.chars()
.filter(c -> c == 'A' || c == 'a')
.count();
Instant end = Instant.now();
scanner.close();
// 显示结果和统计时间
System.out.println("方法2:");
System.out.println("文件中包含字母A的个数:" + count);
System.out.println("统计时间:" + Duration.between(start, end).toMillis() + " 毫秒");
}
}
```
这两种方法都是基于 Java 8 提供的新特性,可以大大简化代码。方法1使用了 BufferedReader 和 Stream API,方法2使用了 Scanner 和正则表达式。无论哪种方法,都可以在控制台输出统计结果和统计时间。
阅读全文