程序员社区

Java IO教程 --- 文件名过滤器FileNameFilter 示例

Java IO教程 --- 文件名过滤器FileNameFilter 示例

当使用FilelistFiles()方法时,可以实现 Java FilenameFilter 接口来过滤文件名。

Java 文件名过滤器

Java FileNameFilter接口具有boolean accept(File dir, String name)应该实现的方法,并且每个文件都经过测试以将该方法包含在文件列表中。

从 Java 8 开始, FileNameFilter 是一个函数式接口,因为它只有一个方法。

file

当使用FilelistFiles()方法时,可以实现 Java FilenameFilter 接口来过滤文件名。

Java 文件名过滤器

Java FileNameFilter接口具有boolean accept(File dir, String name)应该实现的方法,并且每个文件都经过测试以将该方法包含在文件列表中。

00:21/03:53

10 秒

2.1M

80

Java Tricky Program 20 - 双减法和 BigDecimal

从 Java 8 开始, FileNameFilter 是一个函数式接口,因为它只有一个方法。
java文件名过滤器示例

Java 文件名过滤器示例

我们可以在 java 中使用 FilenameFilter 来查找目录中特定扩展名的所有文件。下面是显示如何在 java 中使用 FileNameFilter 的程序。

package com.journaldev.files;

import java.io.File;
import java.io.FilenameFilter;

public class FileNameFilterExample {

    public static void main(String[] args) {
        String dir = "/Users/pankaj/temp";
        String extension = ".doc";
        findFiles(dir, extension);
    }

    private static void findFiles(String dir, String extension) {
        File file = new File(dir);
        if (!file.exists())
            System.out.println(dir + " Directory doesn't exists");
        File[] listFiles = file.listFiles(new MyFileNameFilter(extension));
        // File[] listFiles = file.listFiles((d, s) -> {
        // return s.toLowerCase().endsWith(extension);
        // });

        if (listFiles.length == 0) {
            System.out.println(dir + "doesn't have any file with extension " + extension);
        } else {
            for (File f: listFiles)
                System.out.println("File: " + dir + File.separator + f.getName());
        }
    }

    // FileNameFilter implementation
    public static class MyFileNameFilter implements FilenameFilter {

        private String extension;

        public MyFileNameFilter(String extension) {
            this.extension = extension.toLowerCase();
        }

        @Override
        public boolean accept(File dir, String name) {
            return name.toLowerCase().endsWith(extension);
        }

    }

}

MyFileNameFilter类实现FilenameFilter接口并接受方法检查文件名是否以特定扩展名结尾。在 main 方法中,我们正在调用findFiles使用 MyFileNameFilter 仅列出 xml 文件的方法。请注意,MyFileNameFilter 的编写方式是在检查文件扩展名时忽略大小写。

带有 lambda 表达式的 Java 中的 FileNameFilter

由于 FileNameFilter 是一个函数式接口,我们可以通过使用lambda 表达式来减少上面的代码。我们根本不需要编写实现。

下面是将 FileNameFilter 与 lambda 表达式一起使用的代码。

File[] listFiles = file.listFiles((d, s) -> {
    return s.toLowerCase().endsWith(extension);
});

这就是 java FileNameFilter示例的全部内容。我希望它能帮助您使用某些标准列出目录中的文件。

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Java IO教程 --- 文件名过滤器FileNameFilter 示例

一个分享Java & Python知识的社区