Java Notes

java.io.FileFilter

See File Filters.

The lists of files or file names returned by the File listFiles() and list() methods include all files and directories. The files/directories that are included may be restricted by passing a java.io.FileFilter to these methods.

Creating a java.io.FileFilter

Create a class that implements the javax.io.FileFilter interface, which means that you must define the boolean accept() method. For example, to create a filter that accepts all directories and HTML files.
private class HTMLFileFilter implements java.io.FileFilter {
    public boolean accept(File f) {
        if (f.isDirectory()) return true;
        String name = f.getName().toLowerCase();
        return name.endsWith("html") || name.endsWith("htm");
    }//end accept
}//end class HTMLFileFilter
This example defines the required accept method. always accept directories so the user can then navigate around the file system. The reason this code doesn't include the "." in front of the suffix is to allow file suffixes like ".shtml", ".xhtml", ....

Using the filter

To use the filter from the example above:
File f;
java.io.FileFilter HTMLfilter = new HTMLFileFilter();
    . . . // a value is given to f
if (f.isDirectory()) {
    File[] children = f.listFiles(HTMLfilter);
    . . .
}
and similarly for String[] names = f.list(HTMLfilter) which returns an array of strings of the names of the files in the directory.