使用 FileNameFilter 过滤多个字符串/扩展名

Rid*_*ris 3 java

我如何过滤多个扩展名,FileNameFilter 一次只允许一个字符串..

文件名过滤 API

//  filter extension, but only allow filtering single extension.
//  i want to filter three extension like mp4, flv, wmv 

public class GenericExtFilter implements FilenameFilter {

    private String ext;

    public GenericExtFilter(String ext) {
        this.ext = ext;
    }

    public boolean accept(File dir, String name) {
        return (name.endsWith(ext));
    }
Run Code Online (Sandbox Code Playgroud)

Rob*_*sen 5

如下重写您的过滤器。

public class GenericExtFilter implements FilenameFilter {
    private String[] exts;

    public GenericExtFilter(String... exts) {
        this.exts = exts;
    }

    @Override
    public boolean accept(File dir, String name) {
        for (String ext : exts) {
             if (name.endsWith(ext)) {
                 return true;
             }
        }

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以用多个扩展来初始化它:new GenericExtFilter("mp4", "flv", "wmv");.

accept方法将循环遍历数组,如果找到匹配的扩展名,则返回 true,如果没有,则返回 false。