Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Filter Multiple String/Extension With FileNameFilter

Tags:

java

How can i filter more than one extension, FileNameFilter only allow one string at a time..

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));
    }
like image 932
Ridzuan Adris Avatar asked Nov 25 '25 03:11

Ridzuan Adris


1 Answers

Rewrite your filter as below.

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;
    }
}

Then you can initialize it with multiple extensions: new GenericExtFilter("mp4", "flv", "wmv");.

The accept method will loop over the array, and if it finds a matching extension will return true, if not, false.

like image 141
Robby Cornelissen Avatar answered Nov 27 '25 16:11

Robby Cornelissen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!