java - FileFilter/FilenameFilter 有什么好处

标签 java file-io

我正在使用一个小型 Java 工具来根据一组文件扩展名获取一组文件,我在使用 listFiles() 和使用 continue; 之间争论不休,当我遇到一个错误的文件时,与使用自定义 FileFilter 或 FilenameFilter 来有效地为我做同样的事情。

在我看来,这些方法是集成工具(如 Swing 文件浏览)的便捷方法,如果我们不连接到任何这些工具,它们并不比手动方法更有效。那是对的吗?这些过滤工具还有其他好处吗?

最佳答案

来自 JDK 1.6 源代码:

public String[] list(FilenameFilter filter) {
    String names[] = list();
    if ((names == null) || (filter == null)) {
        return names;
    }
    ArrayList v = new ArrayList();
    for (int i = 0 ; i < names.length ; i++) {
        if (filter.accept(this, names[i])) {
            v.add(names[i]);
        }
    }
    return (String[])(v.toArray(new String[v.size()]));
}

因此,正如您所见,基本上,此处完成的操作与您在手动测试中所做的相同。它带给您的唯一一件事就是不必重新发明轮子,如果他们突然找到一种更快的方法来做到这一点,您就不必更改代码:)

关于java - FileFilter/FilenameFilter 有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449364/

相关文章:

java - 是否有相当于 Java 的 "next[type]"扫描器的 ruby ?具体来说,一个停止照顾该类型的第一个实例的人?

java - 如何在android中将TCP套接字从一个Activity发送到另一个Activity?

C 在二进制文件中间写入而不覆盖任何现有内容

c# - 一个易于开发人员使用和部署的数据库?

java - 使用 CompletableFuture.runAsync() 与 ForkJoinPool.execute()

c++ - 二进制文件问题

vb.net - 如何在 Visual Basic 中删除文本文件的第一行和最后一行

java - 错误表达式 11111 的非法开始

java - 桌面应用程序中的布局

java - 在 ScrollView 内的无限 RecyclerView 中保留滚动位置(ANDROID)