FileFilter
and FilenameFilter
.See: Description
Interface | Description |
---|---|
ConditionalFileFilter |
Defines operations for conditional file filters.
|
IOFileFilter |
An interface which brings the FileFilter, FilenameFilter, and PathFilter interfaces together.
|
Class | Description |
---|---|
AbstractFileFilter |
Abstracts the implementation of the
FileFilter (IO), FilenameFilter (IO), PathFilter (NIO)
interfaces via our own 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.
|
FileEqualsFileFilter |
Accepts only an exact
File object match. |
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. |
PathEqualsFileFilter |
Accepts only an exact
Path object match. |
PathVisitorFileFilter |
A file filter backed by a path visitor.
|
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).
|
SymbolicLinkFileFilter |
This filter accepts
File s that are symbolic links. |
TrueFileFilter |
A file filter that always returns true.
|
WildcardFileFilter |
Filters files using the supplied wildcards.
|
WildcardFilter | Deprecated
Use WildcardFileFilter.
|
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]); }
You can alternatively build a filter tree using the "and", "or", and "not" methods on filters themselves:
File dir = new File("."); String[] files = dir.list( new AndFileFilter( new PrefixFileFilter("A").and( new SuffixFileFilter(".class").or(new SuffixFileFilter(".java"))), new DirectoryFileFilter().not() ) ); 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]); }
You can combine Java file tree walking by using java.nio.file.Files.walk()
APIs with filters:
final Path dir = Paths.get(""); // We are interested in files older than one day final long cutoff = System.currentTimeMillis() - (24 * 60 * 60 * 1000); final AccumulatorPathVisitor visitor = AccumulatorPathVisitor.withLongCounters(new AgeFileFilter(cutoff)); // // Walk one dir Files.walkFileTree(dir, Collections.emptySet(), 1, visitor); System.out.println(visitor.getPathCounters()); System.out.println(visitor.getFileList()); // visitor.getPathCounters().reset(); // // Walk dir tree Files.walkFileTree(dir, visitor); System.out.println(visitor.getPathCounters()); System.out.println(visitor.getDirList()); System.out.println(visitor.getFileList());
There are a few other goodies in that class so please have a look at the documentation in detail.
Copyright © 2002–2021 The Apache Software Foundation. All rights reserved.