Package org.apache.commons.io.filefilter
Class WildcardFileFilter
- java.lang.Object
-
- org.apache.commons.io.filefilter.AbstractFileFilter
-
- org.apache.commons.io.filefilter.WildcardFileFilter
-
- All Implemented Interfaces:
java.io.FileFilter
,java.io.FilenameFilter
,java.io.Serializable
,java.nio.file.FileVisitor<java.nio.file.Path>
,PathFilter
,PathVisitor
,IOFileFilter
public class WildcardFileFilter extends AbstractFileFilter implements java.io.Serializable
Filters files using the supplied wildcards.This filter selects files and directories based on one or more wildcards. Testing is case-sensitive by default, but this can be configured.
The wildcard matcher uses the characters '?' and '*' to represent a single or multiple wildcard characters. This is the same as often found on Dos/Unix command lines. The check is case-sensitive by default. See
FilenameUtils.wildcardMatchOnSystem(String,String)
for more information.For example:
Using Classic IO
File dir = new File("."); FileFilter fileFilter = new WildcardFileFilter("*test*.java~*~"); File[] files = dir.listFiles(fileFilter); for (String file : files) { System.out.println(file); }
Using NIO
final Path dir = Paths.get(""); final AccumulatorPathVisitor visitor = AccumulatorPathVisitor.withLongCounters(new WildcardFileFilter("*test*.java~*~")); // // 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());
- Since:
- 1.3
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from interface org.apache.commons.io.filefilter.IOFileFilter
EMPTY_STRING_ARRAY
-
-
Constructor Summary
Constructors Constructor Description WildcardFileFilter(java.lang.String wildcard)
Construct a new case-sensitive wildcard filter for a single wildcard.WildcardFileFilter(java.lang.String... wildcards)
Construct a new case-sensitive wildcard filter for an array of wildcards.WildcardFileFilter(java.lang.String[] wildcards, IOCase caseSensitivity)
Construct a new wildcard filter for an array of wildcards specifying case-sensitivity.WildcardFileFilter(java.lang.String wildcard, IOCase caseSensitivity)
Construct a new wildcard filter for a single wildcard specifying case-sensitivity.WildcardFileFilter(java.util.List<java.lang.String> wildcards)
Construct a new case-sensitive wildcard filter for a list of wildcards.WildcardFileFilter(java.util.List<java.lang.String> wildcards, IOCase caseSensitivity)
Construct a new wildcard filter for a list of wildcards specifying case-sensitivity.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
accept(java.io.File file)
Checks to see if the file name matches one of the wildcards.boolean
accept(java.io.File dir, java.lang.String name)
Checks to see if the file name matches one of the wildcards.java.nio.file.FileVisitResult
accept(java.nio.file.Path file, java.nio.file.attribute.BasicFileAttributes attributes)
Checks to see if the file name matches one of the wildcards.java.lang.String
toString()
Provide a String representation of this file filter.-
Methods inherited from class org.apache.commons.io.filefilter.AbstractFileFilter
postVisitDirectory, preVisitDirectory, visitFile, visitFileFailed
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.commons.io.filefilter.IOFileFilter
and, negate, or
-
-
-
-
Constructor Detail
-
WildcardFileFilter
public WildcardFileFilter(java.util.List<java.lang.String> wildcards)
Construct a new case-sensitive wildcard filter for a list of wildcards.- Parameters:
wildcards
- the list of wildcards to match, not null- Throws:
java.lang.IllegalArgumentException
- if the pattern list is nulljava.lang.ClassCastException
- if the list does not contain Strings
-
WildcardFileFilter
public WildcardFileFilter(java.util.List<java.lang.String> wildcards, IOCase caseSensitivity)
Construct a new wildcard filter for a list of wildcards specifying case-sensitivity.- Parameters:
wildcards
- the list of wildcards to match, not nullcaseSensitivity
- how to handle case sensitivity, null means case-sensitive- Throws:
java.lang.IllegalArgumentException
- if the pattern list is nulljava.lang.ClassCastException
- if the list does not contain Strings
-
WildcardFileFilter
public WildcardFileFilter(java.lang.String wildcard)
Construct a new case-sensitive wildcard filter for a single wildcard.- Parameters:
wildcard
- the wildcard to match- Throws:
java.lang.IllegalArgumentException
- if the pattern is null
-
WildcardFileFilter
public WildcardFileFilter(java.lang.String... wildcards)
Construct a new case-sensitive wildcard filter for an array of wildcards.- Parameters:
wildcards
- the array of wildcards to match- Throws:
java.lang.IllegalArgumentException
- if the pattern array is null
-
WildcardFileFilter
public WildcardFileFilter(java.lang.String wildcard, IOCase caseSensitivity)
Construct a new wildcard filter for a single wildcard specifying case-sensitivity.- Parameters:
wildcard
- the wildcard to match, not nullcaseSensitivity
- how to handle case sensitivity, null means case-sensitive- Throws:
java.lang.IllegalArgumentException
- if the pattern is null
-
WildcardFileFilter
public WildcardFileFilter(java.lang.String[] wildcards, IOCase caseSensitivity)
Construct a new wildcard filter for an array of wildcards specifying case-sensitivity.- Parameters:
wildcards
- the array of wildcards to match, not nullcaseSensitivity
- how to handle case sensitivity, null means case-sensitive- Throws:
java.lang.IllegalArgumentException
- if the pattern array is null
-
-
Method Detail
-
accept
public boolean accept(java.io.File file)
Checks to see if the file name matches one of the wildcards.- Specified by:
accept
in interfacejava.io.FileFilter
- Specified by:
accept
in interfaceIOFileFilter
- Overrides:
accept
in classAbstractFileFilter
- Parameters:
file
- the file to check- Returns:
- true if the file name matches one of the wildcards
-
accept
public boolean accept(java.io.File dir, java.lang.String name)
Checks to see if the file name matches one of the wildcards.- Specified by:
accept
in interfacejava.io.FilenameFilter
- Specified by:
accept
in interfaceIOFileFilter
- Overrides:
accept
in classAbstractFileFilter
- Parameters:
dir
- the file directory (ignored)name
- the file name- Returns:
- true if the file name matches one of the wildcards
-
accept
public java.nio.file.FileVisitResult accept(java.nio.file.Path file, java.nio.file.attribute.BasicFileAttributes attributes)
Checks to see if the file name matches one of the wildcards.- Specified by:
accept
in interfaceIOFileFilter
- Specified by:
accept
in interfacePathFilter
- Parameters:
file
- the file to checkattributes
- the file's basic attributes (TODO may be null).- Returns:
- true if the file name matches one of the wildcards.
- Since:
- 2.9.0
-
toString
public java.lang.String toString()
Provide a String representation of this file filter.- Overrides:
toString
in classAbstractFileFilter
- Returns:
- a String representation
-
-