java 8 lambda_玩Java 8 – Lambda,路径和文件
java 8 lambda
我最近需要读取一堆文件,而不是仅仅抓住我和可能是大多数开发人员拥有的旧FileUtils.java,然后从一个项目复制到另一个项目,我决定快速看看其他方法。
是的,我知道有Commons IO和Google IO ,我为什么还要打扰? 他们可能会做得更好,但是我想检查一下NIO jdk类并同时使用lambda。而且,老实说,我认为这实际上是一段非常整齐的代码。
所以我有一个特定的用例:
我想逐行从整个目录树中读取所有源文件。
该代码的作用是,它使用Files.walk从起点递归获取所有路径,并创建一个流,然后将其过滤为仅以所需扩展名结尾的文件。 对于每个文件,我使用Files.lines创建一个字符串流,每行一个。 我修剪一下,过滤掉空的并将其添加到return集合中。
一切都非常简洁,这要归功于新的构造。
package net.briandupreez.blog.java8.io;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/*** RecursiveFileLineReader* Created by Brian on 2014-05-26.*/
public class RecursiveFileLineReader {private transient static final Log LOG = LogFactory.getLog(RecursiveFileLineReader.class);/*** Get all the non empty lines from all the files with the specific extension, recursively.** @param path the path to start recursion* @param extension the file extension* @return list of lines*/public static List<String> readAllLineFromAllFilesRecursively(final String path, final String extension) {final List<String> lines = new ArrayList<>();try (final Stream<Path> pathStream = Files.walk(Paths.get(path), FileVisitOption.FOLLOW_LINKS)) {pathStream.filter((p) -> !p.toFile().isDirectory() && p.toFile().getAbsolutePath().endsWith(extension)).forEach(p -> fileLinesToList(p, lines));} catch (final IOException e) {LOG.error(e.getMessage(), e);}return lines;}private static void fileLinesToList(final Path file, final List<String> lines) {try (Stream<String> stream = Files.lines(file, Charset.defaultCharset())) {stream.map(String::trim).filter(s -> !s.isEmpty()).forEach(lines::add);} catch (final IOException e) {LOG.error(e.getMessage(), e);}}}
翻译自: https://www.javacodegeeks.com/2014/05/playing-with-java-8-lambdas-paths-and-files.html
java 8 lambda
java 8 lambda_玩Java 8 – Lambda,路径和文件相关推荐
- Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- Java如何创建不存在的指定路径的文件
实际应用中,要在指定位置创建一个文件,但文件及文件之前的目录都不存在,此时可用以下方法进行创建. File f = new File("I:" + File.separator + ...
- 玩Java 8 – Lambda,路径和文件
我最近需要读取一堆文件,而不是仅仅抓住我和可能是大多数开发人员拥有的旧FileUtils.java,然后从一个项目复制到另一个项目,我决定快速了解其他方法. 是的,我知道有Commons IO和Goo ...
- lambda 高并发_玩Java 8 – Lambda和并发
lambda 高并发 因此Java 8不久前发布,具有大量功能和更改. 我们所有的Java狂热者一直在等待这一点,从他们最初宣布Java 7的所有强大功能开始一直到最终被取消. 我最近才有时间实际开始 ...
- 玩Java 8 – Lambda和并发
因此Java 8不久前发布,具有许多功能和更改. 我们所有的Java狂热者一直在等待这个历史,从他们最初宣布Java 7的所有强大功能开始一直到最终被取消. 我最近才有时间实际开始给它一个真实的外观, ...
- Java笔记 - 黑马程序员_08(Lambda表达式,接口组成更新,方法引用,类加载器,反射)
1. Lambda 1.1 函数式编程思想概述 在数学中,函数就是有输入量.输出量的一套计算方案,也就是"数据做操作" 面向对象思想强调"必须通过对象的形式来做事情&qu ...
- java如何处理锯齿_java – 平滑锯齿的路径
我在另一天参加了线程 Image/Graphic into a Shape,并通过向"区域"中迭代地添加一个矩形,并尝试获取图像的轮廓.那很慢 该示例代替构建GeneralPath ...
- 用通俗易懂的大白话搞明白Java里的函数式编程和Lambda表达式
今天,用通俗易懂的大白话来彻底搞明白Java里的函数式编程和Lambda表达式 为什么引入函数式编程,lambda表达式? 大家都知道,JDK1.8引入了函数式编程,lambda表达式. 那有没有想过 ...
- IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)
晚上在用IDEA的时候遇到了报错: Error:(33, 35) java: -source 7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式) ...
最新文章
- 精通JavaScript--07设计模式:行为型
- 裁员大潮来袭,程序员面试的这些技巧收藏好!
- 转:AIX rcp跨主机远程拷贝数据
- [H265/HEVC]开源项目
- CSS 多浏览器兼容又一方案
- CommunityServer读取Blog分析(一)
- EV3 直接命令 - 第 4 课 用两个驱动轮精确地移动小车
- python 管道队列_关于python:Multiprocessing-管道与队列
- 阿里云NAS备份服务
- 安卓抓包软件_你们要的抓包神器!以及抓包原理
- android文件搜索广播,Android 实现无网络传输文件
- Java Programming Test Question 2
- js定位div坐标存入mysql_js实现获取div坐标的方法
- vmsd文件+服务器,VMWARE ESX中利用SnapShot(快照)文件恢复虚拟机数据
- 报错Exception opening port “18080“ (port may be in use), cause: “java.net.BindException: Address alrea
- ios APP加密探究几维安全iOS 代码混淆效果参考
- c语言中输出姓名身高,c语言输出身高:男生身高=(爸身高+妈身高)×0.54 女生身高=(爸身高×0.92+妈身高)÷2...
- Axure RP 9.0.0.3727 授权码
- 设置 Linux 别名命令 alias 永久生效的方法
- 前端面经知识总结及参考回答 —— 尽量日更
热门文章
- E. Pattern Matching(题意理解+拓扑排序)
- Codeforces Round #663 (Div. 2)
- mybatis源码阅读(五) ---执行器Executor
- Spring MVC常用注解,你会几个?
- 这本书强烈推荐看看!
- Photoshop的绘图工具
- Mybatis+MySQL动态分页查询数据经典案例
- java实现打印倒直角三角形
- 263. 丑数---LeetCode---JAVA
- admiration音标是什么_英语admiration的意思解释|读音发音|相关词语_英语词典_词林在线词典...