q7goodies事例

在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);}}));

下周会有更多好吃的东西

请继续关注下周,当我们向您展示如何在jOOX中使用XML改进Java 8时

参考: Java 8 Friday Goodies:java.io终于成功了! 从我们的JCG合作伙伴 Lukas Eder在JAVA,SQL和JOOQ博客中获得。

翻译自: https://www.javacodegeeks.com/2014/01/java-8-friday-goodies-java-io-finally-rocks.html

q7goodies事例

q7goodies事例_Java 8 Friday Goodies:java.io终于成功了!相关推荐

  1. Java 8 Friday Goodies:java.io终于成功了!

    在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们已经写了一些关于Java ...

  2. q7goodies事例_Java 8 Friday Goodies:新的新I / O API

    q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...

  3. q7goodies事例_Java 8 Friday Goodies:SQL ResultSet流

    q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...

  4. q7goodies事例_Java 8 Friday Goodies:轻松派本地缓存

    q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...

  5. q7goodies事例_Java 8 Friday Goodies:本地交易范围

    q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...

  6. q7goodies事例_Java 8 Friday Goodies:Lambda和排序

    q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...

  7. q7goodies事例_Java 8 Friday Goodies:Lambda和SQL

    q7goodies事例 在 Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢 jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. ...

  8. q7goodies事例_Java 8 Friday Goodies:Lambda和XML

    q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...

  9. q7goodies事例_Java 8 Friday Goodies:精益并发

    q7goodies事例 在Data Geekery ,我们喜欢Java. 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋. 我们 ...

最新文章

  1. 再译《A *路径搜索入门》之一
  2. ADA4530静电计放大器
  3. 【1024】阿里开源项目汇总
  4. python lambda map reduce_简单了解python filter、map、reduce的区别
  5. Python 之 异常
  6. js基础代码大全_关于前端业务代码的一些见解
  7. .ashx文件与.ashx.cs
  8. 躁动不安的年代,你需要读几本好书(python爬虫及数据分析)
  9. java xsi type_java – JAXB – 如何根据XML值设置XML元素的xsi:type?
  10. C++复合类型-引用变量
  11. Spark安装和编程实践(Spark2.4.0)
  12. 重庆大学计算机学院考研,2021年重庆大学计算机学院考研指南
  13. 火爆!GitHub 标星 144k 的前后端学习路线,2021 年最新整理,看完后不再迷茫不再徘徊
  14. 计算机相关专业学历重要么?
  15. CSS 列表样式 (ul)
  16. 半小时速通Python标准库os
  17. 12.23网络嗅探实验记录
  18. 线性代数学习笔记——第五十四讲——非齐次方程组解的性质
  19. DI(Dependence Injection)依赖注入
  20. 《地理信息系统导论》 坐标系统 复习题

热门文章

  1. 【DP】【容斥】Nice to Meet You(AT3634)
  2. 深入理解Java中的逃逸分析
  3. Spring Boot 最佳实践
  4. 我猜,每个程序员对着电梯都想过调度算法吧
  5. Shell入门(十)之echo
  6. JS向对象中添加和删除属性
  7. 19年8月 字母哥 第二章 RESTFul接口实现与测试 看到这里了
  8. android:background大小,小Demo小知识-android:foreground与android:background
  9. js+php在线截图 jquery fileupload.js,另一种图片上传 jquery.fileupload.js
  10. sql server累计求和函数_SQL基础--SQL高级功能