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:
  `FileFilter`, `FilenameFilter`, `Serializable`, `FileVisitor<Path>`, `PathMatcher`, `PathFilter`, `PathVisitor`, `IOFileFilter`

public class WildcardFileFilter extends AbstractFileFilter implements 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.

To build an instance, use `WildcardFileFilter.Builder`.

For example:

## Using Classic IO

     File dir = FileUtils.current();
     FileFilter fileFilter = WildcardFileFilter.builder().setWildcards("*test*.java~*~").get();
     File[] files = dir.listFiles(fileFilter);
     for (String file : files) {
         System.out.println(file);
     }

## Using NIO

     final Path dir = PathUtils.current();
     final AccumulatorPathVisitor visitor = AccumulatorPathVisitor.withLongCounters(
         WildcardFileFilter.builder().setWildcards("*test*.java~*~").get());
     //
     // 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());

## Deprecating Serialization

Serialization is deprecated and will be removed in 3.0.

Since:
  1.3
See Also:
  - Serialized Form

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `WildcardFileFilter.Builder`
  Builds a new `WildcardFileFilter` instance.

- ## Field Summary

  ### Fields inherited from interface org.apache.commons.io.filefilter.IOFileFilter

  `EMPTY_STRING_ARRAY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `WildcardFileFilter(String wildcard)`
  Deprecated.
  Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
  `WildcardFileFilter(String... wildcards)`
  Deprecated.
  Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
  `WildcardFileFilter(String[] wildcards, IOCase ioCase)`
  Deprecated.
  Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
  `WildcardFileFilter(String wildcard, IOCase ioCase)`
  Deprecated.
  Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
  `WildcardFileFilter(List<String> wildcards)`
  Deprecated.
  Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
  `WildcardFileFilter(List<String> wildcards, IOCase ioCase)`
  Deprecated.
  Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `accept(File file)`
  Checks to see if the file name matches one of the wildcards.
  `boolean`
  `accept(File dir, String name)`
  Checks to see if the file name matches one of the wildcards.
  `FileVisitResult`
  `accept(Path path, BasicFileAttributes attributes)`
  Checks to see if the file name matches one of the wildcards.
  `static WildcardFileFilter.Builder`
  `builder()`
  Constructs a new `WildcardFileFilter.Builder`.
  `String`
  `toString()`
  Provide a String representation of this file filter.

  ### Methods inherited from class org.apache.commons.io.filefilter.AbstractFileFilter

  `handle, postVisitDirectory, preVisitDirectory, visitFile, visitFileFailed`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface org.apache.commons.io.filefilter.IOFileFilter

  `and, matches, negate, or`

- ## Constructor Details

  - ### WildcardFileFilter

    @Deprecated public WildcardFileFilter(List<String> wildcards)
    Deprecated.
    Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
    Constructs a new case-sensitive wildcard filter for a list of wildcards.
    Parameters:
      `wildcards` - the list of wildcards to match, not null
    Throws:
      `IllegalArgumentException` - if the pattern list is null
      `ClassCastException` - if the list does not contain Strings

  - ### WildcardFileFilter

    @Deprecated public WildcardFileFilter(List<String> wildcards, IOCase ioCase)
    Deprecated.
    Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
    Constructs a new wildcard filter for a list of wildcards specifying case-sensitivity.
    Parameters:
      `wildcards` - the list of wildcards to match, not null
      `ioCase` - how to handle case sensitivity, null means case-sensitive
    Throws:
      `IllegalArgumentException` - if the pattern list is null
      `ClassCastException` - if the list does not contain Strings

  - ### WildcardFileFilter

    @Deprecated public WildcardFileFilter(String wildcard)
    Deprecated.
    Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
    Constructs a new case-sensitive wildcard filter for a single wildcard.
    Parameters:
      `wildcard` - the wildcard to match
    Throws:
      `IllegalArgumentException` - if the pattern is null

  - ### WildcardFileFilter

    @Deprecated public WildcardFileFilter(String... wildcards)
    Deprecated.
    Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
    Constructs a new case-sensitive wildcard filter for an array of wildcards.
    Parameters:
      `wildcards` - the array of wildcards to match
    Throws:
      `NullPointerException` - if the pattern array is null

  - ### WildcardFileFilter

    @Deprecated public WildcardFileFilter(String wildcard, IOCase ioCase)
    Deprecated.
    Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
    Constructs a new wildcard filter for a single wildcard specifying case-sensitivity.
    Parameters:
      `wildcard` - the wildcard to match, not null
      `ioCase` - how to handle case sensitivity, null means case-sensitive
    Throws:
      `NullPointerException` - if the pattern is null

  - ### WildcardFileFilter

    @Deprecated public WildcardFileFilter(String[] wildcards, IOCase ioCase)
    Deprecated.
    Use `builder()`, `WildcardFileFilter.Builder`, and `WildcardFileFilter.Builder.get()`
    Constructs a new wildcard filter for an array of wildcards specifying case-sensitivity.
    Parameters:
      `wildcards` - the array of wildcards to match, not null
      `ioCase` - how to handle case sensitivity, null means case-sensitive
    Throws:
      `NullPointerException` - if the pattern array is null

- ## Method Details

  - ### builder

    public static WildcardFileFilter.Builder builder()
    Constructs a new `WildcardFileFilter.Builder`.
    Returns:
      a new `WildcardFileFilter.Builder`.
    Since:
      2.12.0

  - ### accept

    public boolean accept(File file)
    Checks to see if the file name matches one of the wildcards.
    Specified by:
      `accept` in interface `FileFilter`
    Specified by:
      `accept` in interface `IOFileFilter`
    Overrides:
      `accept` in class `AbstractFileFilter`
    Parameters:
      `file` - the file to check
    Returns:
      true if the file name matches one of the wildcards

  - ### accept

    public boolean accept(File dir, String name)
    Checks to see if the file name matches one of the wildcards.
    Specified by:
      `accept` in interface `FilenameFilter`
    Specified by:
      `accept` in interface `IOFileFilter`
    Overrides:
      `accept` in class `AbstractFileFilter`
    Parameters:
      `dir` - the file directory (ignored)
      `name` - the file name
    Returns:
      true if the file name matches one of the wildcards

  - ### accept

    public FileVisitResult accept(Path path, BasicFileAttributes attributes)
    Checks to see if the file name matches one of the wildcards.
    Specified by:
      `accept` in interface `IOFileFilter`
    Specified by:
      `accept` in interface `PathFilter`
    Parameters:
      `path` - the file to check
      `attributes` - 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 String toString()
    Provide a String representation of this file filter.
    Overrides:
      `toString` in class `AbstractFileFilter`
    Returns:
      a String representation