Java 8 Friday Goodies:java.io终于成功了!
在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 ,现在我们觉得是时候开始一个新的博客系列了……
Java 8星期五
每个星期五,我们都会向您展示一些不错的教程风格的Java 8新功能,这些功能利用了lambda表达式,扩展方法和其他好东西。 您可以在GitHub上找到源代码 。
Java 8 Goodie:带有Lambdas的java.io
与文件系统进行交互在Java中有些痛苦。 CTMMC向我们展示了如何使用Java复制文件的示例 。 尽管仍然存在一些问题,至少,我们现在可以使用lambda和新的Streams API 遍历文件系统并列出文件 ! 这是我们已推送到GitHub存储库的FileFilterGoodies示例:
public class FileFilterGoodies {public static void main(String args[]) {listRecursive(new File("."));}/*** This method recursively lists all* .txt and .java files in a directory*/private static void listRecursive(File dir) {Arrays.stream(dir.listFiles((f, n) ->!n.startsWith(".")&&(f.isDirectory()|| n.endsWith(".txt")|| n.endsWith(".java")))).forEach(unchecked((file) -> {System.out.println(file.getCanonicalPath().substring(new File(".").getCanonicalPath().length()));if (file.isDirectory()) {listRecursive(file);}}));}/*** This utility simply wraps a functional* interface that throws a checked exception* into a Java 8 Consumer*/private static <T> Consumer<T>unchecked(CheckedConsumer<T> consumer) {return t -> {try {consumer.accept(t);}catch (Exception e) {throw new RuntimeException(e);}};}@FunctionalInterfaceprivate interface CheckedConsumer<T> {void accept(T t) throws Exception;}
}
上面程序的输出是:
\jOOQ's Java 8 Goodies.iml
\LICENSE.txt
\out
\out\production
\out\production\jOOQ's Java 8 Goodies
\out\production\jOOQ's Java 8 Goodies\org
\out\production\jOOQ's Java 8 Goodies\org\jooq
\out\production\jOOQ's Java 8 Goodies\org\jooq\java8
\out\production\jOOQ's Java 8 Goodies\org\jooq\java8\goodies
\out\production\jOOQ's Java 8 Goodies\org\jooq\java8\goodies\io
\out\production\jOOQ's Java 8 Goodies\org\jooq\java8\goodies\io\FileFilterGoodies$CheckedConsumer.class
\out\production\jOOQ's Java 8 Goodies\org\jooq\java8\goodies\io\FileFilterGoodies.class
\README.txt
\src
\src\org
\src\org\jooq
\src\org\jooq\java8
\src\org\jooq\java8\goodies
\src\org\jooq\java8\goodies\io
\src\org\jooq\java8\goodies\io\FileFilterGoodies.java
现在,这真的很棒,不是吗? 让我们分解上面的listRecursive()
方法:
// With this method, we wrap the File[] array
// into a new Java 8 Stream, which has awesome
// new methods.
Arrays.stream(// The Java 1.2 File.listFiles() method luckily
// accepts a @FunctionalInterface, which can be
// instantiated using a lambda expression
// ...
// In this example, we'll just ignore the fact
// that listFiles can return nulldir.listFiles((f, n) ->!n.startsWith(".")&&(f.isDirectory()|| n.endsWith(".txt")|| n.endsWith(".java"))))// Each Stream (and also java.util.List) has this
// awesome forEach method, that accepts a Consumer.forEach(// Unfortunately, Java 8 Consumers don't allow
// throwing checked exceptions. So let's quickly
// wrap it (see details below) ...unchecked(// ... and pass another lambda expression to it,
// which prints the local path and recurses(file) -> {System.out.println(file.getCanonicalPath().substring(new File(".").getCanonicalPath().length()));if (file.isDirectory()) {listRecursive(file);}}));
下周还会有更多好吃的东西
请继续关注下周,当我们向您展示如何将Java 8 与jOOX一起使用XML进行改进时
翻译自: https://www.javacodegeeks.com/2014/01/java-8-friday-goodies-java-io-finally-rocks.html
Java 8 Friday Goodies:java.io终于成功了!相关推荐
- q7goodies事例_Java 8 Friday Goodies:java.io终于成功了!
q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...
- Java 8 Friday Goodies:新的新I / O API
在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们已经写了一些关于Java ...
- Java-Runoob:Java Stream、File、IO
ylbtech-Java-Runoob:Java Stream.File.IO 1.返回顶部 1. Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出 ...
- java epoll select_Java 非阻塞 IO 和异步 IO
点击上方 Java后端,选择 设为星标 优质文章,及时送达 作者 | HongJie 链接 | javadoop.com/post/nio-and-aio 本文将介绍非阻塞 IO 和异步 IO,也就是 ...
- Java AIO初探(异步网络IO)
Java AIO初探(异步网络IO) 原文: http://www.blogjava.net/killme2008/archive/2009/09/20/295743.html 按照<Unix网 ...
- Java 8 Friday Goodies:Lambda和XML
在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们已经写了一些关于Java ...
- java httputil_Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型
本文转载自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 http ...
- java中的NIO和IO到底是什么区别?20个问题告诉你答案
摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...
- java实践11之网络IO BIO和NIO(上)
文章目录 java实践11之网络IO BIO和NIO(上) 1 BIO: BIO的使用demo 优化版使用线程池实现异步处理 为何已经异步处理了还说BIO是阻塞的? BIO带来的问题 2 NIO ja ...
最新文章
- django-debug-toolbar使用指南
- 我好像还没睡醒,在说胡话...
- 用Red5搭建支持WEB播放的实时监控视频
- 005_FastDFS分布式nginx访问
- 中国-中东欧国家特色农产品 云上国际农民丰收节贸易会
- 将java 打包成exe 可执行文件
- Scala教程之:Future和Promise
- 前端学习(2972):使用mock假数据
- java上传rar文件_java实现上传zip/rar压缩文件,自动解压
- laravel的一些笔记
- Vrep中支持的运动规划算法
- C++赋值操作符重载
- angularjs外部文件中的控制器使用
- DDFE 技术周刊(第十期)2017.1.9
- Golang 1.16 新特性-embed 包及其使用
- Openlayer图层载入时进行坐标系的转换
- Rust学习教程32 - 动态数组Vec
- 判断两个矩形是否重叠
- 腿部建模布线解析—3D角色建模师必了解的人体结构
- 脚本不得关闭非脚本打开的窗口。Scripts may close only the windows that were opened by it...
热门文章
- webpack打包器小结(1)
- 会话技术Cookie
- spring boot测试_测试Spring Boot有条件的合理方式
- facelets_Java EE 8中的MVC 1.0:使用Facelets入门
- 框架中建立浮动框架_建立代理,而不是框架
- 香草 jboss 工具_如何为JBoss Developer Studio 8设置BPM和规则工具
- fest556_AssertJ Fest Hamcrest
- central maven_一键发布到Maven Central的方法
- nio 读取目录所有文件_在NIO.2中使用文件和目录
- spring 4.3.x_如何在Spring 3.x中使用事件