java - Java:我们如何进一步简化文件的 java 8 流逻辑
问题描述
我们如何结合下面的 2 个流逻辑:
public void filterRecord(File inputDirectory) throws IOException {
if (inputDirectory.exists() && !inputDirectory.isDirectory()) {
List<Path> pathStreams = Files.list(Paths.get(inputDirectory.getAbsolutePath()))
.filter(path -> path.toString().endsWith(".csv"))
.collect(Collectors.toList());
for (Path filePath : pathStreams) {
Files.lines(filePath)
.filter(line -> (line != null && !line.isEmpty()))
.filter(line -> "10".equals(line.substring(0, line.indexOf(",")).trim()))
.forEach(System.out::println);
}
}
}
在上面的代码中,两个 Streams 参与其中,
- 第一个流是使用目录路径过滤具有特定扩展名的文件列表。
- 第二个流是从文件中过滤内容并在控制台上打印。
解决方案
public void fileStreamsFilter(Path inputDirectoryPath) throws IOException {
if (Files.exists(inputDirectoryPath) && Files.isDirectory(inputDirectoryPath)) {
Files.list(inputDirectoryPath).filter(path -> path.toString().endsWith(".csv"))
.flatMap(path -> {
try {
return Files.lines(path);
} catch (IOException ioException) {
log.error(ioException.getMessage(), ioException);
}
return null;
})
.filter(line -> (line != null && !line.isEmpty()))
.filter(line -> "10".equals(line.substring(0, line.indexOf(",")).trim()))
.forEach(log::info);
}
}
推荐阅读
- python - 在 txt 文件中搜索多列中的多个名称
- java - mvn eclipse:eclipse 无法解析依赖
- python - Pandas 确定每个日期是否在 +- 15 天的范围内有上一年的日期
- wordpress - 从 wordpress htaccess 重定向到 http 到 https
- javascript - 服务器使用 ajax 以 404 状态响应
- typescript - 打字稿中的连接redis设置
- laravel - Amazon EC2 设置问题上的 Laravel Queue Worker
- batch-file - 将 cmd 变量分配给 for do 循环的输出
- ruby-on-rails - Rails 5:将 time_ago_in_words 从控制器传递到视图时出错
- html - 如何在图像类的css中设置宽度和高度