# 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.