将File.listFiles与FileNameExtensionFilter一起使用 [英] Using File.listFiles with FileNameExtensionFilter
问题描述
我想在目录中获取一个特定扩展名的文件列表。在API(Java 6)中,我看到一个方法 File.listFiles(FileFilter)
这样做。
I would like to get a list of files with a specific extension in a directory. In the API (Java 6), I see a method File.listFiles(FileFilter)
which would do this.
由于我需要一个特定的扩展名,我创建了一个 FileNameExtensionFilter
。但是当我使用 listFiles
时,我收到一个编译错误。我假设由于 FileNameExtensionFilter实现FileFilter
,我应该可以这样做。代码如下:
Since I need a specific extension, I created a FileNameExtensionFilter
. However I get a compilation error when I use listFiles
with this. I assumed that since FileNameExtensionFilter implements FileFilter
, I should be able to do this. Code follows:
FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt");
String dir = "/users/blah/dirname";
File f[] = (new File(dir)).listFiles(filter);
最后一行显示编译错误:
The last line shows a compilation error:
方法listFiles(FileNameFilter)类型File不适用于FileNameExtensionFilter类型的参数
method listFiles(FileNameFilter) in type File is not applicable for arguments of type FileNameExtensionFilter
我是尝试使用 listFiles(FileFilter)
,而不是 listFiles(FileNameFilter)
。为什么编译器不能识别这个?
I am trying to use listFiles(FileFilter)
, not listFiles(FileNameFilter)
. Why does the compiler not recognize this?
如果我编写自己的扩展过滤器扩展 FileFilter
我宁愿使用 FileNameExtensionFilter
写自己的。我做错了什么?
This works if I write my own extension filter extending FileFilter
. I would rather use FileNameExtensionFilter
than write my own. What am I doing wrong?
推荐答案
FileNameExtensionFilter
类旨在用于 Swing 用于 JFileChooser
。
尝试使用 FilenameFilter
。例如:
Try using a FilenameFilter
instead. For example:
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");
}
});
这篇关于将File.listFiles与FileNameExtensionFilter一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!