Class 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.

    To build an instance, see 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
    • Constructor Detail

      • WildcardFileFilter

        @Deprecated
        public WildcardFileFilter​(java.util.List<java.lang.String> wildcards)
        Constructs 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

        @Deprecated
        public WildcardFileFilter​(java.util.List<java.lang.String> wildcards,
                                  IOCase ioCase)
        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:
        java.lang.IllegalArgumentException - if the pattern list is null
        java.lang.ClassCastException - if the list does not contain Strings
      • WildcardFileFilter

        @Deprecated
        public WildcardFileFilter​(java.lang.String wildcard)
        Constructs 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

        @Deprecated
        public WildcardFileFilter​(java.lang.String... wildcards)
        Constructs a new case-sensitive wildcard filter for an array of wildcards.
        Parameters:
        wildcards - the array of wildcards to match
        Throws:
        java.lang.NullPointerException - if the pattern array is null
      • WildcardFileFilter

        @Deprecated
        public WildcardFileFilter​(java.lang.String wildcard,
                                  IOCase ioCase)
        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:
        java.lang.NullPointerException - if the pattern is null
      • WildcardFileFilter

        @Deprecated
        public WildcardFileFilter​(java.lang.String[] wildcards,
                                  IOCase ioCase)
        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:
        java.lang.NullPointerException - 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 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 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 interface java.io.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 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 interface IOFileFilter
        Specified by:
        accept in interface PathFilter
        Parameters:
        file - 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 java.lang.String toString()
        Provide a String representation of this file filter.
        Overrides:
        toString in class AbstractFileFilter
        Returns:
        a String representation