# Package org.apache.commons.io.filefilter

This package defines an interface (IOFileFilter) that combines both `FileFilter` and `FilenameFilter`.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  ConditionalFileFilter | Defines operations for conditional file filters.
  IOFileFilter | An interface which brings the FileFilter and FilenameFilter interfaces together.

- Class Summary
  Class | Description
  --- | ---
  AbstractFileFilter | An abstract class which implements the Java FileFilter and FilenameFilter interfaces via the IOFileFilter interface.
  AgeFileFilter | Filters files based on a cutoff time, can filter either newer files or files equal to or older.
  AndFileFilter | A `FileFilter` providing conditional AND logic across a list of file filters.
  CanExecuteFileFilter | This filter accepts `File`s that can be executed.
  CanReadFileFilter | This filter accepts `File`s that can be read.
  CanWriteFileFilter | This filter accepts `File`s that can be written to.
  DelegateFileFilter | This class turns a Java FileFilter or FilenameFilter into an IO FileFilter.
  DirectoryFileFilter | This filter accepts `File`s that are directories.
  EmptyFileFilter | This filter accepts files or directories that are empty.
  FalseFileFilter | A file filter that always returns false.
  FileFileFilter | This filter accepts `File`s that are files (not directories).
  FileFilterUtils | Useful utilities for working with file filters.
  HiddenFileFilter | This filter accepts `File`s that are hidden.
  MagicNumberFileFilter | File filter for matching files containing a "magic number".
  NameFileFilter | Filters file names for a certain name.
  NotFileFilter | This filter produces a logical NOT of the filters specified.
  OrFileFilter | A `FileFilter` providing conditional OR logic across a list of file filters.
  PrefixFileFilter | Filters file names for a certain prefix.
  RegexFileFilter | Filters files using supplied regular expression(s).
  SizeFileFilter | Filters files based on size, can filter either smaller files or files equal to or larger than a given threshold.
  SuffixFileFilter | Filters files based on the suffix (what the file name ends with).
  TrueFileFilter | A file filter that always returns true.
  WildcardFileFilter | Filters files using the supplied wildcards.
  WildcardFilter | Deprecated Use WildcardFileFilter.

## Package org.apache.commons.io.filefilter Description

This package defines an interface (IOFileFilter) that combines both `FileFilter` and `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 `FileDialog`, for example.

There are a number of 'primitive' filters:
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

And there are five 'boolean' filters:
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.

Copyright © 2002–2020 The Apache Software Foundation. All rights reserved.