首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FileFilter / FilenameFilter的优势是什么

FileFilter / FilenameFilter的优势是什么
EN

Stack Overflow用户
提问于 2010-12-15 19:26:01
回答 4查看 3.6K关注 0票数 3

我正在开发一个小的Java工具来获取一组基于一组文件扩展名的文件,我正在考虑是使用listFiles()还是在遇到坏文件时使用continue;,还是使用自定义的FileFilter或FilenameFilter有效地为我做同样的事情。

在我看来,对于像Swing文件浏览这样的集成工具来说,这些方法是很方便的方法,如果我们没有连接到这些工具中的任何一个,那么它们的效率并不比手动方法更高。对吗?这些过滤工具还有其他好处吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-15 19:30:46

来自JDK 1.6源代码:

代码语言:javascript
运行
复制
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()]));
}

因此,正如您所看到的,基本上,这里所做的事情与您使用手动测试所做的事情相同。它给你带来的唯一好处就是不必重新发明轮子,如果他们突然发现了一种更快的方法,你就不需要改变你的代码了:)

票数 2
EN

Stack Overflow用户

发布于 2010-12-15 19:31:01

与任何其他基于接口的API一样,这允许极大地重用逻辑。您可以让java.io.* API为您查找任何类型的文件,特别是在您使用诸如Apache Commons IO:

http://commons.apache.org/io/api-1.4/org/apache/commons/io/filefilter/package-summary.html

票数 2
EN

Stack Overflow用户

发布于 2010-12-15 19:31:08

是的,它们主要用于接受文件筛选器的工具(或者通常在确定逻辑的代码与执行筛选器评估的代码不同的任何地方)。在引擎盖下没有魔法,它们只是在你自己的循环中做你可以做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4449364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档