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进行改进时

参考: 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET获取客户端、服务器端基础信息

1. 在ASP.NET中专用属性&#xff1a;获取服务器电脑名&#xff1a;Page.Server.ManchineName获取用户信息&#xff1a;Page.User获取客户端电脑名&#xff1a;Page.Request.UserHostName获取客户端电脑IP&#xff1a;Page.Request.UserHostAddress2. 在网络编程中的通用方法&am…

java json decode 中文_关于json_decode乱码及NULL的解决方法

写接口的同学应该会经常遇到数据格式的转换&#xff0c;这时候必不可少的两个函数就是json_encode()和json_decode()。这两个函数使用的时候有很多的主要事项&#xff0c;在这里我来说一下json_decode()。json_decode():对JSON 格式的字符串进行解码,接受一个JSON 格式的字符串…

syslog可能引起得问题_牙齿经常有问题?可能是这4个坏习惯引起的,要改正

很多人明明很年轻&#xff0c;却得了很多牙齿疾病&#xff0c;甚至到了换牙的地步。牙齿虽然是最为坚硬的身体器官&#xff0c;但是即使再坚硬也是容易受到伤害的&#xff0c;日常生活中有很多小事都会造成对牙齿的伤害&#xff0c;想要保护牙齿&#xff0c;一定要改正一下这几…

jq实现前端文件上传

FormData FormData是XMLHttpRequest Level 2 新增的一个接口。 使用FormData可以实现各种文件上传。 使用 // 创建FormData的实例 var formdata new FormData();// 用append()为实例添加键和值 formdata.append(键名, 键值); 注意 使用jq的$.ajax()方法来进行文件上传时&am…

使用JUnitParams进行参数化的JUnit测试

参数化的单元测试用于在不同条件下测试相同的代码。 借助参数化的单元测试&#xff0c;我们可以建立一种测试方法&#xff0c;该方法从某些数据源中检索数据。 该数据源可以是测试数据对象&#xff0c;外部文件甚至数据库的集合。 一般的想法是使使用相同的单元测试方法测试不同…

js webpack 解决跨域问题_webpack-dev-server 作代理解决跨域,让你的本地开发飞起来...

最近在接到一个需求是做一个可视化的监控系统&#xff0c;mock数据来开发的话实在不太方便&#xff0c;况且数据量之大。查了一下资料&#xff0c;可以用webpack-dev-server作为代理&#xff0c;直接请求线上&#xff0c;哈哈哈&#xff0c;是不是很方便。### 目前我用的是webp…

代码片段 欢迎补充 一起共享

python&#xff1a; https://github.com/Lj-github/pythonTool转载于:https://www.cnblogs.com/liujiang04/p/9787486.html

实现用户操作指引功能

主要是通过定位找到需要指引的目标元素&#xff0c;然后再在蒙版上画一个div&#xff0c;设置为白色&#xff0c;定位到目标元素位置。思路大概就是这样。 图一&#xff1a; ![](https://img2018.cnblogs.com/blog/1354858/201811/1354858-20181105141942044-1763163359.png) 图…

扩展Guava缓存溢出到磁盘

缓存使您可以轻松地显着加速应用程序。 Java平台的两种出色的缓存实现是Guava缓存和Ehcache 。 尽管Ehcache功能丰富得多&#xff08;例如其Searchable API &#xff0c;将缓存持久化到磁盘或溢出到大内存的可能性&#xff09;&#xff0c;但与Guava相比&#xff0c;它也带来了…

磁盘

我们现在计算机的瓶颈在磁盘上 CPU运算速率已达到5.0GHz 1GHz10亿次每秒&#xff08;计算速度&#xff09; 硬盘 MB 软盘——>碟片&#xff08;100MB&#xff09;——>芯片ssd&#xff08;500MB~2000MB&#xff09; 存储程序的方式&#xff1a; 磁盘与内存想比较 能够用…

java gson fromjson,Gson的fromJson()方法

Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。在日常应用中&#xff0c;我们一般都会碰到两种情况&#xff0c;转成单一实体对象和转换成对象列表或者其他结构。先来看第一种&#xff1a;比如json字符串为&#xff1a;[{“name”:”name0”,”age”:0}]Pers…

python文件的读取与写入_python中文件的读取与写入以及os模块

1.文件读取的三部曲&#xff1a;打开 ---> 操作 ----> 关闭r(默认参数)&#xff1a;-只能读&#xff0c;不能写-读取文件不存在 会报错FileNotFoundError: [Errno 2] No such file or directory: /tmp/westosw(д)-write only-文件不存在的时候&#xff0c;会自动创建新的…

vue2.0 element-ui中的el-select选择器无法显示选中的内容

我使用的是element-ui V2.2.3。代码如下&#xff0c;当我选择值得时候&#xff0c;el-select选择器无法显示选中的内容&#xff0c;但是能触发change方法&#xff0c;并且能输出选择的值。 select.vue文件 <template><div><div class"row" v-for&quo…

Gradle接口:Gradle构建元数据

正如我之前在“ 识别Gradle约定 ”和“ 从Ant Build演变Gradle构建&#xff1a;导入Ant构建文件 ”之类的文章中所显示的那样&#xff0c;可以通过Groovy访问Gradle的API来收集有关Gradle构建的重要信息。 在本文中&#xff0c;我演示了如何通过Gradle接口访问基本的Gradle构建…

字符串(string)的常用语法和常用函数

在python中&#xff0c;加了引号&#xff08;单引号、双引号、三引号&#xff09;的字符就是字符串类型&#xff0c;python并没有字符类型。 字符串也是很常用的数据类型&#xff0c;这里介绍一些用的较多的语法和方法&#xff0c;直接以代码示例展示。 1 str helloworld2 str…

os 模块 和 os模块下的path模块

import os # os 主要用于与操作系统进行交互 #获取当前的工作目录 print&#xff08;os.getcwd&#xff08;&#xff09;&#xff09; #切换工作目录 os .chdir("D:\上海python全栈4期\day20\pack") #print(os.getcwd()) #当前目录 是一个点 #print&#xff08;os.cu…

php 工资 2018,佛山市2018年平均工资(社平工资)

2018年佛山市城镇非私营单位就业人员年平均工资为79824元(折合月平均工资6652)。2018年佛山市在岗职工年平均工资为80288元(折合月平均工资6691&#xff0c;四舍五入)。2018年佛山市城镇私营单位就业人员年平均工资为57297元(折合月平均工资4775)。广东地区2019年7月1日起市平均…

oj运行时错误如何查找原因_VLOOKUP又失灵?避免这四种错误类型

说起函数&#xff0c;你第一个想到什么&#xff1f;那绝对是表界曝光率最高的函数——VLOOKUP 了&#xff01;什么&#xff0c;你还不知道 VLOOKUP&#xff1f;那今天这篇文章&#xff0c;你可千万不能错过&#xff01;&#xff01;根据编号匹配姓名&#xff1b;根据评分匹配等…

Table Dragger - 简单的 JS 拖放排序表格插件

Table Dragger 是一个极简的实现拖放排序的表格插件&#xff0c;纯 JavaScript 库&#xff0c;不依赖 jQuery。用于构建操作方便的拖放排序功能&#xff0c;超级容易设置&#xff0c;有平滑的动画&#xff0c;支持触摸事件。 在线演示 免费下载 您可能感兴趣的相关文章网…

使用正则表达式在Java中悬挂缩进段落

这篇文章显示了如何使用正则表达式将缩进的长段落挂起。 该方法将考虑单词边界&#xff0c;这意味着它将不会破坏缩进单词。 为了说明此问题&#xff0c;请考虑以下示例&#xff1a; 近年来&#xff0c;人们越来越努力从自然语言文本中提取实体之间的关系。 在这篇论文中&…