Package org.apache.commons.io.filefilter
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.
| 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.
-
ClassDescriptionAn abstract class which implements the Java FileFilter and FilenameFilter interfaces via the IOFileFilter interface.Filters files based on a cutoff time, can filter either newer files or files equal to or older.A
FileFilterproviding conditional AND logic across a list of file filters.This filter acceptsFiles that can be executed.This filter acceptsFiles that can be read.This filter acceptsFiles that can be written to.Defines operations for conditional file filters.This class turns a Java FileFilter or FilenameFilter into an IO FileFilter.This filter acceptsFiles that are directories.This filter accepts files or directories that are empty.A file filter that always returns false.This filter acceptsFiles that are files (not directories).Useful utilities for working with file filters.This filter acceptsFiles that are hidden.An interface which brings the FileFilter and FilenameFilter interfaces together.File filter for matching files containing a "magic number".Filters file names for a certain name.This filter produces a logical NOT of the filters specified.AFileFilterproviding conditional OR logic across a list of file filters.Filters file names for a certain prefix.Filters files using supplied regular expression(s).Filters files based on size, can filter either smaller files or files equal to or larger than a given threshold.Filters files based on the suffix (what the file name ends with).A file filter that always returns true.Filters files using the supplied wildcards.Deprecated.Use WildcardFileFilter.