org.apache.commons.io.filefilter
Class WildcardFileFilter

java.lang.Object
  extended by org.apache.commons.io.filefilter.AbstractFileFilter
      extended by org.apache.commons.io.filefilter.WildcardFileFilter
All Implemented Interfaces:
java.io.FileFilter, java.io.FilenameFilter, java.io.Serializable, 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 extension check is case-sensitive by . See FilenameUtils.wildcardMatchOnSystem(java.lang.String, java.lang.String) for more information.

For example:

 File dir = new File(".");
 FileFilter fileFilter = new WildcardFileFilter("*test*.java~*~");
 File[] files = dir.listFiles(fileFilter);
 for (int i = 0; i < files.length; i++) {
   System.out.println(files[i]);
 }
 

Since:
Commons IO 1.3
Version:
$Revision: 155419 $ $Date: 2007-12-22 02:03:16 +0000 (Sat, 22 Dec 2007) $
Author:
Jason Anderson
See Also:
Serialized Form

Field Summary
private  IOCase caseSensitivity
          Whether the comparison is case sensitive.
private  java.lang.String[] wildcards
          The wildcards that will be used to match filenames.
 
Constructor Summary
WildcardFileFilter(java.util.List wildcards)
          Construct a new case-sensitive wildcard filter for a list of wildcards.
WildcardFileFilter(java.util.List wildcards, IOCase caseSensitivity)
          Construct a new wildcard filter for a list of wildcards specifying case-sensitivity.
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.
 
Method Summary
 boolean accept(java.io.File file)
          Checks to see if the filename matches one of the wildcards.
 boolean accept(java.io.File dir, java.lang.String name)
          Checks to see if the filename matches one of the wildcards.
 java.lang.String toString()
          Provide a String representaion of this file filter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

wildcards

private final java.lang.String[] wildcards
The wildcards that will be used to match filenames.


caseSensitivity

private final IOCase caseSensitivity
Whether the comparison is case sensitive.

Constructor Detail

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 wildcard,
                          IOCase caseSensitivity)
Construct a new wildcard filter for a single wildcard specifying case-sensitivity.

Parameters:
wildcard - the wildcard to match, not null
caseSensitivity - 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)
Construct a new case-sensitive wildcard filter for an array of wildcards.

The array is not cloned, so could be changed after constructing the instance. This would be inadvisable however.

Parameters:
wildcards - the array of wildcards to match
Throws:
java.lang.IllegalArgumentException - if the pattern array is null

WildcardFileFilter

public WildcardFileFilter(java.lang.String[] wildcards,
                          IOCase caseSensitivity)
Construct a new wildcard filter for an array of wildcards specifying case-sensitivity.

The array is not cloned, so could be changed after constructing the instance. This would be inadvisable however.

Parameters:
wildcards - the array of wildcards to match, not null
caseSensitivity - how to handle case sensitivity, null means case-sensitive
Throws:
java.lang.IllegalArgumentException - if the pattern array is null

WildcardFileFilter

public WildcardFileFilter(java.util.List 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 null
java.lang.ClassCastException - if the list does not contain Strings

WildcardFileFilter

public WildcardFileFilter(java.util.List 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 null
caseSensitivity - how to handle case sensitivity, null means case-sensitive
Throws:
java.lang.IllegalArgumentException - if the pattern list is null
java.lang.ClassCastException - if the list does not contain Strings
Method Detail

accept

public boolean accept(java.io.File dir,
                      java.lang.String name)
Checks to see if the filename matches one of the wildcards.

Specified by:
accept in interface java.io.FilenameFilter
Specified by:
accept in interface IOFileFilter
Overrides:
accept in class AbstractFileFilter
Parameters:
dir - the file directory
name - the filename
Returns:
true if the filename matches one of the wildcards

accept

public boolean accept(java.io.File file)
Checks to see if the filename matches one of the wildcards.

Specified by:
accept in interface java.io.FileFilter
Specified by:
accept in interface IOFileFilter
Overrides:
accept in class AbstractFileFilter
Parameters:
file - the file to check
Returns:
true if the filename matches one of the wildcards

toString

public java.lang.String toString()
Provide a String representaion of this file filter.

Overrides:
toString in class AbstractFileFilter
Returns:
a String representaion


Copyright (c) 2002-2011 Apache Software Foundation