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

q7goodies事例

在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 ,现在我们觉得是时候开始一个新的博客系列了,……

Java 8星期五

每个星期五,我们都会向您展示一些不错的教程风格的Java 8新功能,这些功能利用了lambda表达式,扩展方法和其他出色的功能。 您可以在GitHub上找到源代码 。

Java 8 Goodie:新的新I / O API

在本系列的上一篇博客文章中 ,我们主要通过帮助您将java.io.FileFilter实例表示为lambda表达式,展示了Java 8的lambda表达式如何在现有(但已过时)的JDK 1.2 I / O API上进行改进。

许多读者正确地指出,许多java.io API已被Java 7的java.nio API取代,其中“ N”代表“ New” (我知道。New.Old.Old-2.Old- 2-FIXME。Old-2-TODO ...)。 但是Java 8的情况甚至更好。尽管jOOQ社区成员建议将其称为“企业IO”,但我们将其称为“新的新I / O API”(NNIO):

@ lukaseder @ brunoborges @ ponzao为“企业IO” +1(在这种情况下,当然不能正常工作)— Franz van Betteraey(@FrVaBe) 2014年1月15日

回到更具建设性的博客。 让我们走一小段路程(打算用双关语,请参见Files.walk() ),了解改进的Java 8 NIO功能。 首先让我们看看java.nio.Files中的新方法。 实际上,我们终于可以列出Path的内容了,这真是太棒了! 在Java 8中,我们将使用新引入的Files.list() ,它返回文件的惰性流:

Files.list(new File(".").toPath()).forEach(System.out::println);

我得到的输出是这样的:

.\.git
.\.gitignore
.\.idea
.\java8-goodies.iml
.\LICENSE.txt
.\pom.xml
.\README.txt
.\src
.\target

请记住, forEach()是“终端方法” ,即消耗流的方法。 您不得在此类Stream上调用任何其他方法。

我们还可以跳过所有隐藏文件,仅列出前三个“常规”文件,如下所示:

Files.list(new File(".").toPath()).filter(p -> !p.getFileName().toString().startsWith(".")).limit(3).forEach(System.out::println);

我得到的新输出是这个:

.\java8-goodies.iml
.\LICENSE.txt
.\pom.xml

现在,这已经非常棒了。 会好起来吗? 是的,它可以。 您还可以使用新的Files.walk()方法进入目录,从而“遍历”整个文件层次结构。 这是如何做:

Files.walk(new File(".").toPath()).filter(p -> !p.getFileName().toString().startsWith(".")).forEach(System.out::println);

不幸的是,以上方法将创建一个路径流,其中不包括所有隐藏的文件和目录,但它们的后代仍然被列出。 这样我们得到:

Omitted:
.\.gitBut listed:
.\.git\COMMIT_EDITMSG
.\.git\config
.\.git\description
[...]

很容易理解为什么会这样。 Files.walk()返回所有后代文件的(惰性)流。 对.filter()的调用将删除从Stream中隐藏的那些,但这对可能适用于walk()实现的任何递归算法没有影响。 坦白说,这有点令人失望。 我们不能利用Java 7的Files.walkFileTree()方法,因为接收的FileVisitor类型不是@FunctionalInterface

但是,我们可以使用以下琐碎的逻辑来低效地解决此限制:

Files.walk(new File(".").toPath()).filter(p -> !p.toString().contains(File.separator + ".")).forEach(System.out::println);

现在产生预期的

.
.\java8-goodies.iml
.\LICENSE.txt
.\pom.xml
.\README.txt
.\src
.\src\main
.\src\main\java
.\src\main\java\org
.\src\main\java\org\jooq
[...]

好消息是新的Files.lines()方法。 以下示例说明了我们如何轻松地从文件中逐行读取,修剪每行(删除缩进)并滤除空白行:

Files.lines(new File("pom.xml").toPath()).map(s -> s.trim()).filter(s -> !s.isEmpty()).forEach(System.out::println);

以上收益:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jooq</groupId>
<artifactId>java8-goodies</artifactId>
<version>1.0-SNAPSHOT</version>
[...]

结论

显然,惰性评估的概念会在社区中引起大量混乱,类似于Stream只能使用一次的事实。 我们敢打赌Java 8 Streams API将成为新的Stack Overflow问题的最大来源。

尽管如此, Streams API还是很棒的 ,下周在Java 8 Friday系列上,我们将看到如何利用lambda表达式和Streams 事物进行排序 ,然后再了解Java 8将如何改善数据库交互!

参考: Java 8 Friday Goodies Java的 合作伙伴 Lukas Eder在Java,SQL和JOOQ博客上提供的新的新I / O API 。

翻译自: https://www.javacodegeeks.com/2014/01/java-8-friday-goodies-the-new-new-io-apis.html

q7goodies事例

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

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

相关文章

网管交换机与非网管交换机的利弊介绍

交换机可以分为网管交换机以及非网管交换机&#xff0c;网管型交换机就字面上的意思&#xff0c;可以网络管理的交换机&#xff0c;而非网管交换机&#xff0c;是相对网管型交换机而言的&#xff0c;非网管交换机又称为傻瓜型交换机&#xff0c;不需要任何设置&#xff0c;插上…

探探自动配对PHP_CentOS7 - 安装Apache HTTP Server和PHP

安装Apache HTTP Server和PHP你可能听说过LAMP的缩写&#xff0c;它代表Linux&#xff0c;Apache&#xff0c;MySQL和PHP。 它指的是用于提供网站和Web应用程序的流行技术配对。 本文教您如何安装Apache HTTP Server(简称Apache)并将其配置为与PHP一起使用以提供动态Web内容.Ap…

网管型交换机比普通交换机有哪些明显优势

现在网络这么普及&#xff0c;对于交换机的需求也就越发的重要了&#xff0c;而市面上交换机的型号这么多&#xff0c;之前我们也分析过按照不同的情况怎么区分交换机&#xff0c;但浏览名称的时候我们也会发现&#xff0c;许多交换机的简介都会写着网管型交换机和非网管型交换…

广西计算机学业水平考试,2017年6月广西信息技术学业水平考试(1)-2017广西信息技术会考真题...

2017年6月广西壮族自治区普通高中学业水平考试信息技术(全卷满分100分&#xff0c;考试时间90分钟)一、单项选择题(本大题共60小题&#xff0c;每小题1分&#xff0c;共60分。温馨提示&#xff1a;请在答题卡上作答&#xff0c;在本试题上作答无效。)1.下列选项中&#xff0c;属…

cryptojs支持rsa加密_新特性解读 | 从 wireshark 看 MySQL 8.0 加密连接

作者&#xff1a;秦福朗爱可生 DBA 团队成员&#xff0c;负责项目日常问题处理及公司平台问题排查。热爱 IT&#xff0c;喜欢在互联网里畅游&#xff0c;擅长摄影、厨艺&#xff0c;不会厨艺的 DBA 不是好司机&#xff0c;didi~本文来源&#xff1a;原创投稿*爱可生开源社区出品…

2021苏州大学计算机考研分数,苏州大学2021考研分数线已公布

基本要求(一)复试分数线1.各基层研究生培养单位根据本单位学科(专业)考生的初试情况和招生计划&#xff0c;自主确定不低于教育部2021年全国硕士研究生招生考试考生进入复试的一区初试成绩基本要求的复试分数线。(1)同一专业学位的全日制与非全日制复试分数线一致。(2)一志愿上…

工业交换机如何预防雷电?

工业交换机需要综合进行防雷防范&#xff0c;因为如果偏重哪一方的防雷只能称为局部防雷&#xff0c;而局部防雷带有“先天不足”问题。所以工业交换机的防雷不能偏重任何一方。那么工业交换机如何防雷呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xf…

sap-erp实施心得_实施动态代理-比较

sap-erp实施心得有时需要拦截某些方法调用&#xff0c;以便每次调用被拦截方法时都执行自己的逻辑。 如果您不属于Java EE的CDI领域&#xff0c;并且不想使用诸如Aspectj之类的AOP框架&#xff0c;那么您将有一个简单而有效的替代方法。 从1.5版开始&#xff0c;JDK附带了类ja…

保存点云数据_PCL入门系列三——PCL进行数据读写

本节课我们将了解到以下内容&#xff1a;基本的PCL中的数据类型&#xff1b;使用PCL进行简单编程&#xff1a;写文件与读文件。一、PCL库基本数据类型上一节课&#xff0c;我们使用PCL库在本地写入了一个名为test_pcd.pcd的文件。我们划分一下程序的任务步骤&#xff1a;构造pc…

计算机辅助技术课设,《计算机辅助设计技术》课程标准-20210311103339.doc-原创力文档...

.《计算机辅助设计技术》课程标准教研室主任&#xff1a;专业带头人&#xff1a;(部 )主任&#xff1a;教务处处长&#xff1a;教学副院长&#xff1a;审核批准日期&#xff1a;二○一三年 十二月Word 资料.《计算机辅助设计》课程标准(基本信息)课程编码&#xff1a;课程类别&…

工业交换机技术优点

工业领域工作过的人都会知道&#xff0c;工业上的交换机称之为工业以太网交换机&#xff0c;工业以太网交换机就是我们常说的工业交换机&#xff0c;工业交换机是专门为了满足灵活多变的工业应用需求而设计的工业设备&#xff0c;它提供一种高性价比工业以太网通讯解决方案。所…

win8系统的计算机共享在哪里设置方法,win10系统设置与win8系统局域网文件共享的方案...

win10系统使用久了&#xff0c;好多网友反馈说关于对win10系统设置与win8.1系统局域网文件共享设置的方法&#xff0c;在使用win10系统的过程中经常不知道如何去对win10系统设置与win8.1系统局域网文件共享进行设置&#xff0c;有什么好的办法去设置win10系统设置与win8.1系统局…

python中输入字符串中只有字母_python中,只有一个字母的字符串属于类型

python中,只有一个字母的字符串属于类型 答:字符串 智慧职教: 静脉输液流程输液规划的哪一种形式? 答:程序 26. 患者,男性,38岁,体重80kg,从高空坠落后导致肝破裂,入院后须立即进行手术治疗。住院处护理人员首先应 答:护送患者入院 中国大学MOOC: 有人说:“流浪汉都是不想…

光端机的使用方法

光端机是一种不仅可以传输视频信号&#xff0c;还能传输音频、电话、网络、和很多种控制信号的以太网介质传输设备&#xff0c;目前主要使用安防监控行业。那么&#xff0c;光端机是怎么使用的&#xff0c;接下来就由飞畅科技的小编来为大家详细介绍下光端机的使用方法吧&#…

python脚本设置环境变量_详解如何设置Python环境变量?

家好&#xff0c;我是Yivies&#xff01;相信大家多多少少遇到过这样的情况吧&#xff1f;就是在安装了python之后想完整在命令提示符直接输入python就可以使用的操作&#xff0c;但是会出现输入了python之后找不到命令的情况&#xff01;例如这样↓↓↓但是&#xff01;这并不…

vmware服务器虚拟化实施文档,VMware服务器虚拟化

vmware服务器虚拟化技术,简介了服务器虚拟化解决的问题以及vmware服务器虚拟化技术Vm最新版的服务器虚拟化解决方案貌似叫做vSphere_4.1&#xff0c;其中也是包括了ESX和Vcenter来实现功能的&#xff0c;主要能够实现的功能有&#xff1a;1、 Vmotion&#xff0c;实现虚拟机的动…

使用Junit参数在更短的时间内编写更好的单元测试

大多数人都知道单元测试的重要性和好处&#xff0c;以及为什么要在进行的项目中使用它们。 而且&#xff0c;大多数人不喜欢在他们从事的项目中编写单元测试。 TDD的人当然处于另一面&#xff0c;但根据我的经验&#xff0c;他们在IT行业中是少数派。 说到我&#xff0c;我和大…

光端机常见五大故障问题及解决方法

光端机&#xff0c;就是光信号传输的终端设备。光端机在安防中的作用&#xff0c;主要还是起到光端机本身的传输作用。光端机的作用是把一些传输距离比较近的信号转换为传输距离相对较远的信号进行传输&#xff0c;主要的作用是增加传输距离和在监控中起到节约成本的作用。光端…

用香港服务器建收费网站,使用香港站群服务器搭建网站的好处有哪些?

香港站群服务器搭建网站的作用&#xff1a;1、香港站群服务器有利于提高网站被搜索引擎收录情况;2、搭建站群能够有效降低网站被封的风险;3、当网站遭受攻击时&#xff0c;可快速通过带有独立IP的网站来查出问题所在&#xff0c;从而有效提高服务器的维护。香港站群服务器搭建站…

分数化简_分数应用题七讲 (一) 图示法解分数应用题

一、今日一讲图示法就是用线段图(或其它图形)把题目中的已知条件和问题表示出来&#xff0c;这样可以把抽象的数量关系具体化&#xff0c;往往可以从图中找到解题的突破口。运用图示法教学应用题&#xff0c;是培养思维能力的有效方法之一。图示法不仅可以形象地、直观地反映分…