This package defines an interface (IOFileFilter) that combines both {@link java.io.FileFilter} and {@link java.io.FilenameFilter}. Besides that the package offers a series of ready-to-use implementations of the IOFileFilter interface including implementation that allow you to combine other such filters.
These filter can be used to list files or in {@link java.awt.FileDialog}, for example.
| DirectoryFilter | Only accept directories | 
| PrefixFileFilter | Filter based on a prefix | 
| SuffixFileFilter | Filter based on a suffix | 
| NameFileFilter | Filter based on a filename | 
| WildcardFileFilter | Filter based on wildcards | 
| AgeFileFilter | Filter based on last modified time of file | 
| SizeFileFilter | Filter based on file size | 
| TrueFileFilter | Accept all files | 
| FalseFileFilter | Accept no files | 
| NotFileFilter | Applies a logical NOT to an existing filter | 
| AndFileFilter | Combines two filters using a logical AND | 
| OrFileFilter | Combines two filter using a logical OR | 
These boolean FilenameFilters can be nested, to allow arbitrary expressions. For example, here is how one could print all non-directory files in the current directory, starting with "A", and ending in ".java" or ".class":
  File dir = new File(".");
  String[] files = dir.list( 
    new AndFileFilter(
      new AndFileFilter(
        new PrefixFileFilter("A"),
        new OrFileFilter(
          new SuffixFileFilter(".class"),
          new SuffixFileFilter(".java")
        )
      ),
      new NotFileFilter(
        new DirectoryFileFilter()
      )
    )
  );
  for ( int i=0; i<files.length; i++ ) {
    System.out.println(files[i]);
  }
This package also contains a utility class: FileFilterUtils. It allows you to use all file filters without having to put them in the import section. Here's how the above example will look using FileFilterUtils:
  File dir = new File(".");
  String[] files = dir.list( 
    FileFilterUtils.andFileFilter(
      FileFilterUtils.andFileFilter(
        FileFilterUtils.prefixFileFilter("A"),
        FileFilterUtils.orFileFilter(
          FileFilterUtils.suffixFileFilter(".class"),
          FileFilterUtils.suffixFileFilter(".java")
        )
      ),
      FileFilterUtils.notFileFilter(
        FileFilterUtils.directoryFileFilter()
      )
    )
  );
  for ( int i=0; i<files.length; i++ ) {
    System.out.println(files[i]);
  }
There are a few other goodies in that class so please have a look at the documentation in detail.