我想在目录中获取具有特定扩展名的文件列表。在API(Java 6)中,我看到了一种可以执行此操作的方法File.listFiles(FileFilter)
。
由于我需要特定的扩展名,因此我创建了FileNameExtensionFilter
。但是,当我使用listFiles
时,出现编译错误。我以为自FileNameExtensionFilter implements FileFilter
以来,我应该能够做到这一点。代码如下:
FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt");
String dir = "/users/blah/dirname";
File f[] = (new File(dir)).listFiles(filter);
最后一行显示编译错误:
我正在尝试使用
listFiles(FileFilter)
,而不是listFiles(FileNameFilter)
。为何编译器无法识别这一点?如果我编写自己的扩展过滤器扩展
FileFilter
,则此方法有效。我宁愿使用FileNameExtensionFilter
,也不愿自己编写。我究竟做错了什么? 最佳答案
FileNameExtensionFilter
类旨在将Swing用于 JFileChooser
中。
尝试改用 FilenameFilter
。例如:
File dir = new File("/users/blah/dirname");
File[] files = dir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".txt");
}
});