我正在开发一个小的Java工具来获取一组基于一组文件扩展名的文件,我正在考虑是使用listFiles()还是在遇到坏文件时使用continue;,还是使用自定义的FileFilter或FilenameFilter有效地为我做同样的事情。
在我看来,对于像Swing文件浏览这样的集成工具来说,这些方法是很方便的方法,如果我们没有连接到这些工具中的任何一个,那么它们的效率并不比手动方法更高。对吗?这些过滤工具还有其他好处吗?
发布于 2010-12-15 19:30:46
来自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()]));
}因此,正如您所看到的,基本上,这里所做的事情与您使用手动测试所做的事情相同。它给你带来的唯一好处就是不必重新发明轮子,如果他们突然发现了一种更快的方法,你就不需要改变你的代码了:)
发布于 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
发布于 2010-12-15 19:31:08
是的,它们主要用于接受文件筛选器的工具(或者通常在确定逻辑的代码与执行筛选器评估的代码不同的任何地方)。在引擎盖下没有魔法,它们只是在你自己的循环中做你可以做的事情。
https://stackoverflow.com/questions/4449364
复制相似问题