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 directory
        Path dir = Paths.get(folder);
        //the Files class offers methods for validation
        if (!Files.exists(dir) || !Files.isDirectory(dir)) {
            System.out.println('No such directory!');
        }
        //Try with resources... so nice!
        try (DirectoryStream

                       ds = 
                    Files.newDirectoryStream(dir, pattern)) {
            //iterate over the content of the directory
            int 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值