Java 7:使用NIO.2进行文件过滤-第1部分

NIO.2是自Java 7起JDK中包含的用于I / O操作的新API。使用此新API,您可以执行与

java.io以及许多出色的功能,例如:访问文件元数据和监视目录更改等。 显然,由于向后兼容,java.io包不会消失,但是我们鼓励为满足新的I / O需求而开始使用NIO.2。 在本文中,我们将看到使用此API过滤目录内容有多么容易。 有3种方法可以做到这一点,这就是为什么这篇文章是Part1。

你需要什么

NetBeans 7+或任何其他支持Java 7的IDE
JDK 7+

在某些应用程序中,过滤目录的内容是一项常见的任务,而NIO.2使其变得非常简单。 接下来将描述我们将要使用的类和接口:

  • java.nio.file.Path :接口,其对象可以表示文件系统中的文件或目录。 就像java.io.File,但是在NIO.2中。 无论您要执行什么I / O操作,都需要该接口的实例。
  • java.nio.file.DirectoryStream :接口,其对象遍历目录的内容。
  • java.nio.file.Files :带有对文件,目录等进行操作的静态方法的类。

我们将使用目录模式来过滤目录内容,这种模式类似于正则表达式,但更简单。 该模式与文件,目录等的名称匹配。它们位于目录内。 记住这一点很重要,使用此方法只能按文件名,目录名等进行过滤。

有关浮动的更多信息,
检查此Wiki 。 另外,在 Java文件 。

因此,假设我们有一个名为Images的目录,并且需要遍历该目录中的文件,但是我们只需要.png文件。 为此,我们必须遵循以下步骤:

  1. 获取一个指向目录Images的java.nio.file.Path实例。
  2. 打开使用java.nio.file.Files类,以及将目录和图案(* .PNG)作为参数的新java.nio.file.DirectoryStream。
  3. 使用java.nio.file.DirectoryStream实例遍历目录的内容。

接下来是使用作为参数传递的模式扫描目录的方法的源代码:

//in a class.../*** Scans the directory using the glob pattern passed * as parameter. * @param folder directory to scan* @param pattern glob pattern (filter)*/private static void scan(String folder, String pattern) {//obtains the Images directory in the app directoryPath dir = Paths.get(folder);//the Files class offers methods for validationif (!Files.exists(dir) || !Files.isDirectory(dir)) {System.out.println('No such directory!');}//Try with resources... so nice!try (DirectoryStreamds = Files.newDirectoryStream(dir, pattern)) {//iterate over the content of the directoryint count = 0;for (Path path : ds) {System.out.println(path.getFileName());count++;}System.out.println();System.out.printf('%d Files match the pattern', count);} catch (IOException ex) {ex.printStackTrace();}}

以下是在Windows计算机上执行的结果:

在我的Linux虚拟机上:

这就是我从Java中喜欢的东西,只需编写一次,就可以在任何地方运行! 希望您喜欢这篇文章,还有更多方法可以过滤目录的内容,我们将在以后的文章中进行探讨。

单击此处下载完整的源代码。

参考: Java 7:使用NIO.2进行文件过滤–来自Java和ME博客的JCG合作伙伴 Alexis Lopez的第1部分 。

翻译自: https://www.javacodegeeks.com/2012/10/java-7-file-filtering-using-nio-2-part-1.html

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

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

相关文章

第十三周活动进度表

学习进度表: 第三周内容时间周一(4:10-6:00)上课,周二晚上(8:00-9:00),周四晚上(8:00-8:30)&#…

课时66.颜色控制属性下(理解)

今天来讲解十六进制控制属性的方法,其实用十六进制表示的方式本质就是rgb,只不过它们的格式不一样而已,十六进制中是通过每两位表示一种颜色的方式来给颜色赋值。 如 #FF0000 FF----r 00----g 00----b 修改前两位相当于修改rgb中的第一…

idea复制java_IntelliJ IDEA的剪切、复制和粘贴

IntelliJ IDEA的剪切、复制和粘贴本节内容概览:• 剪切、复制和粘贴的基本使用• 复制选定的文本片段• 将路径复制到文件• 将引用复制到一行或一个符号• 剪切选定的文本片段• 从剪贴板粘贴最后一个条目• 将最后一个条目从剪贴板粘贴为纯文本• 从剪贴板粘贴特定…

python方差的计算公式为什么减一_样本标准差分母为何是n-1

欢迎各位学习从0到1Python数据科学之旅,腾讯课堂和网易云课堂入口分别如下:(腾讯课堂新营业,报名可领取20元优惠券)微信公众号:pythonEducation模型和统计项目QQ:231469242大家好,今天给大家介绍标准差。标…

pxe+kickstart 自动化部署linux操作系统

kickstart 是什么? 批量部署Linux服务器操作系统 运行模式: C/S client/server 服务器上要部署: DHCP tftp(非交互式文件共享) 安装系统的三个步骤: 1、加载vmlinuz、 initrd (微型启动根目录,它…

课时57.HTML被废弃的标签(掌握)

1.为什么HTML中有一部分标签会被废弃&#xff1f; 因为当前HTML中的标签只有一个作用&#xff0c;就是用来添加语义&#xff0c;而早期的HTML标签中有一部分标签是没有语义的 有一部分标签是用来修改样式的 所以这部分标签就被淘汰了 <br><hr><font> <…

Java编码约定被认为是有害的

在Oracle网站上有Java编程语言指南的正式代码约定 。 您可能希望这份超过20页的文档将是有关Java语言的最佳实践&#xff0c;提示和技巧的最完整&#xff0c;最全面和最权威的来源。 但是一旦你开始阅读它&#xff0c;失望和愤怒就会增加。 我想指出本指南中最明显的错误&#…

flash php socket通信_php socket通信机制实例说明

php socket通信机制实例说明与代码----什么是socket 所谓socket一般也称作"套接字"&#xff0c;用于描述ip地址和端口&#xff0c;是一个通讯链的句柄。使用程序一般经过"套接字"向network发出请求也许应对network请求。说白了就是一种通讯机制。它类似于银…

python的ogr模块_python GDAL/OGR模块安装注意事项

软件准备&#xff1a;首先&#xff0c;确保电脑里已安装python2.7(2.x版本的比较好用&#xff0c;因为还使用ArcGIS)&#xff0c;然后从http://www.gisinternals.com网站上下载这两个文件GDAL-2.1.3.win32-py2.7.msi和gdal-201-1500-core.msi。软件安装&#xff1a;首先安装gda…

课时55.详情和概要标签(理解)

1.什么是详情和概要标签&#xff1f; 作用&#xff1a;利用summary标签来描述概要信息&#xff0c;利用details标签来描述详情信息 默认情况下是折叠展示&#xff0c;想看见详情必须点击 格式&#xff1a; <details> <summary>概要信息</summary> 详情信…

Spring Security可以做的十件事

一 您可以在Spring XML配置文件中指定您选择的授权提供者。 您可以通过配置Spring的http://www.springframework.org/schema/security/spring-security-3.1.xsd模式中定义的authentication-manager来实现。 简化的authentication-manager元素定义看起来像这样&#xff1a; &l…

python编写自定义函数判断n1-n2范围内的素数_【每日道代码题001】- PYTHON基础复习...

问题001-1&#xff1a;请对输入三个整数a,b,c,判断能否以它们为三个边长构成三角形。若能&#xff0c;输出YES和面积&#xff0c;否则输出NOa float(input())b float(input())c float(input())if a > 0 and b > 0 and c > 0: #判断边长是否为正if (a b > c) an…

php绘制一个三角形,如何利用css或html5画出一个三角形?两种不同的制作三角形方法(代码实例)...

我们在平时的前端开发的时候&#xff0c;有时候是需要一些小图形来丰富一下页面效果&#xff0c;比如&#xff1a;下拉列表的倒三角图形。那么这样的一个三角形是如何制作出来的&#xff0c;本章给大家介绍如何利用css或html画出一个三角形&#xff1f;两种不同的制作三角形方法…

课时53.video标签(掌握)

这节课来学习一下html5中新增的标签&#xff0c;我们先来看一下&#xff0c;html5中新增了哪些标签&#xff1f; 打开W3school的网页&#xff0c;点击参考手册中的HTML/HTML5标签&#xff0c;有一个按字母顺序排列的标签&#xff0c;但凡标签后面带有5标记的&#xff0c;都是h…

Date函数基础知识整理

Date类型&#xff1a;1.Date.parse()接收一个表示日期的字符串参数&#xff0c;然后再根据这个字符串返回响应的日期的毫秒数&#xff1b;如&#xff1a;创建一个日期&#xff1a; 1 <script> 2 // var someDatenew Date(May 25,2004); 3 // console.log(someDate);//Tue…

Google Guava –与Monitor同步

Google Guava项目是每个Java开发人员都应该熟悉的库的集合。 Guava库涵盖I / O&#xff0c;集合&#xff0c;字符串操作和并发性。 在这篇文章中&#xff0c;我将介绍Monitor类。 Monitor是一种同步构造&#xff0c;可以在使用ReentrantLock的任何地方使用。 在任何时候&#x…

yaf 重写index.php,php框架Yaf路由重写实例代码

通常为了友好的URL格式&#xff0c;会进行站点URL的重写&#xff0c;可以在webserver(Nginx)的配置中进行rewrite&#xff0c;也可在在程序端进行&#xff0c;本文主要和大家介绍php框架Yaf路由重写&#xff0c;给大家做个参考&#xff0c;希望能帮助到大家。以下使用Yaf框架进…

python类初始化导入库_Python中optparser库用法实例详解

本文研究的主要是Python中optparser库的相关内容&#xff0c;具体如下。一直以来对optparser不是特别的理解&#xff0c;今天就狠下心&#xff0c;静下心研究了一下这个库。当然了&#xff0c;不敢说理解的很到位&#xff0c;但是足以应付正常的使用了。废话不多说&#xff0c;…

SQL--Chapter8--Working with Triggers and Transactions

Objectives:1.Implement triggers 2.Implement transactions 转载于:https://www.cnblogs.com/Catherinezhilin/p/7979644.html

Canvas制作的下雨动画

简介 在codepen上看到一个Canvas做的下雨效果动画&#xff0c;感觉蛮有意思的。就研究了下&#xff0c;这里来分享下&#xff0c;实现技巧。效果可以见下面的链接。 霓虹雨: http://codepen.io/natewiley/full/NNgqVJ/ 效果截图&#xff1a; Canvas动画基础 大家都知道&…